rdf-n3 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/.yardopts +10 -0
- data/AUTHORS +1 -0
- data/History.txt +2 -0
- data/README.rdoc +72 -0
- data/Rakefile +46 -0
- data/VERSION +1 -0
- data/example.rb +45 -0
- data/lib/rdf/n3.rb +30 -0
- data/lib/rdf/n3/format.rb +34 -0
- data/lib/rdf/n3/patches/array_hacks.rb +131 -0
- data/lib/rdf/n3/patches/rdf_escape.rb +131 -0
- data/lib/rdf/n3/reader.rb +447 -0
- data/lib/rdf/n3/reader/n3_grammar.rb +0 -0
- data/lib/rdf/n3/reader/n3_grammar.treetop +227 -0
- data/lib/rdf/n3/version.rb +21 -0
- data/lib/rdf/n3/vocabulary.rb +3 -0
- data/lib/rdf/n3/writer.rb +0 -0
- data/rdf-n3.gemspec +638 -0
- data/spec/cwm_spec.rb +32 -0
- data/spec/n3reader_spec.rb +928 -0
- data/spec/rdf_helper.rb +200 -0
- data/spec/rdfcore/Manifest.rdf +5395 -0
- data/spec/rdfcore/amp-in-url/test001.nt +16 -0
- data/spec/rdfcore/amp-in-url/test001.rdf +40 -0
- data/spec/rdfcore/datatypes-intensional/test001.nt +18 -0
- data/spec/rdfcore/datatypes-intensional/test002.nt +18 -0
- data/spec/rdfcore/datatypes/test001.nt +15 -0
- data/spec/rdfcore/datatypes/test001.rdf +29 -0
- data/spec/rdfcore/datatypes/test002.nt +14 -0
- data/spec/rdfcore/datatypes/test002.rdf +27 -0
- data/spec/rdfcore/datatypes/test002b.nt +17 -0
- data/spec/rdfcore/datatypes/test003a.nt +16 -0
- data/spec/rdfcore/datatypes/test003b.nt +16 -0
- data/spec/rdfcore/datatypes/test005a.nt +16 -0
- data/spec/rdfcore/datatypes/test005b.nt +16 -0
- data/spec/rdfcore/datatypes/test006.nt +17 -0
- data/spec/rdfcore/datatypes/test008a.nt +15 -0
- data/spec/rdfcore/datatypes/test008b.nt +15 -0
- data/spec/rdfcore/datatypes/test009a.nt +15 -0
- data/spec/rdfcore/datatypes/test009b.nt +15 -0
- data/spec/rdfcore/datatypes/test010.nt +17 -0
- data/spec/rdfcore/datatypes/test011a.nt +17 -0
- data/spec/rdfcore/datatypes/test011b.nt +17 -0
- data/spec/rdfcore/horst-01/test001.rdf +38 -0
- data/spec/rdfcore/horst-01/test002.rdf +39 -0
- data/spec/rdfcore/horst-01/test003.rdf +40 -0
- data/spec/rdfcore/horst-01/test004.rdf +42 -0
- data/spec/rdfcore/pfps-10/test001a.nt +14 -0
- data/spec/rdfcore/pfps-10/test001b.nt +15 -0
- data/spec/rdfcore/rdf-charmod-literals/test001.nt +15 -0
- data/spec/rdfcore/rdf-charmod-literals/test001.rdf +34 -0
- data/spec/rdfcore/rdf-charmod-uris/test001.nt +14 -0
- data/spec/rdfcore/rdf-charmod-uris/test001.rdf +34 -0
- data/spec/rdfcore/rdf-charmod-uris/test002.nt +15 -0
- data/spec/rdfcore/rdf-charmod-uris/test002.rdf +33 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/error001.rdf +27 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/error002.rdf +34 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/test001.nt +17 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/test001.rdf +27 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/test002.nt +19 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/test002.rdf +37 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/test003.nt +18 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/test003.rdf +29 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/test004.nt +29 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/test004.rdf +33 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/test006.nt +40 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/test006.rdf +28 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/test007.nt +20 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/test007.rdf +32 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/test008.nt +15 -0
- data/spec/rdfcore/rdf-containers-syntax-vs-schema/test008.rdf +28 -0
- data/spec/rdfcore/rdf-element-not-mandatory/test001.nt +10 -0
- data/spec/rdfcore/rdf-element-not-mandatory/test001.rdf +14 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0001.nt +14 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0001.rdf +35 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0003.nt +14 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0003.rdf +35 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0004.nt +14 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0004.rdf +34 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0005.nt +15 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0005.rdf +40 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0006.nt +14 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0006.rdf +32 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0009.nt +14 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0009.rdf +32 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0010.nt +14 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0010.rdf +38 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0011.nt +15 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0011.rdf +40 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0012.nt +15 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0012.rdf +40 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0013.nt +15 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0013.rdf +40 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0014.nt +15 -0
- data/spec/rdfcore/rdf-ns-prefix-confusion/test0014.rdf +42 -0
- data/spec/rdfcore/rdfms-abouteach/error001.rdf +35 -0
- data/spec/rdfcore/rdfms-abouteach/error002.rdf +35 -0
- data/spec/rdfcore/rdfms-difference-between-ID-and-about/error1.rdf +25 -0
- data/spec/rdfcore/rdfms-difference-between-ID-and-about/test1.nt +14 -0
- data/spec/rdfcore/rdfms-difference-between-ID-and-about/test1.rdf +22 -0
- data/spec/rdfcore/rdfms-difference-between-ID-and-about/test2.nt +14 -0
- data/spec/rdfcore/rdfms-difference-between-ID-and-about/test2.rdf +22 -0
- data/spec/rdfcore/rdfms-difference-between-ID-and-about/test3.nt +14 -0
- data/spec/rdfcore/rdfms-difference-between-ID-and-about/test3.rdf +22 -0
- data/spec/rdfcore/rdfms-duplicate-member-props/test001.nt +17 -0
- data/spec/rdfcore/rdfms-duplicate-member-props/test001.rdf +30 -0
- data/spec/rdfcore/rdfms-empty-property-elements/error001.rdf +33 -0
- data/spec/rdfcore/rdfms-empty-property-elements/error002.rdf +33 -0
- data/spec/rdfcore/rdfms-empty-property-elements/error003.rdf +39 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test001.nt +14 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test001.rdf +33 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test002.nt +14 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test002.rdf +31 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test003.nt +14 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test003.rdf +32 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test004.nt +14 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test004.rdf +32 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test005.nt +18 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test005.rdf +32 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test006.nt +18 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test006.rdf +32 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test007.nt +14 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test007.rdf +32 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test008.nt +14 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test008.rdf +31 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test009.nt +14 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test009.rdf +32 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test010.nt +14 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test010.rdf +31 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test011.nt +18 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test011.rdf +30 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test012.nt +18 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test012.rdf +30 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test013.nt +15 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test013.rdf +35 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test014.nt +15 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test014.rdf +34 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test015.nt +15 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test015.rdf +38 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test016.nt +14 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test016.rdf +31 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test017.nt +14 -0
- data/spec/rdfcore/rdfms-empty-property-elements/test017.rdf +38 -0
- data/spec/rdfcore/rdfms-identity-anon-resources/test001.nt +14 -0
- data/spec/rdfcore/rdfms-identity-anon-resources/test001.rdf +33 -0
- data/spec/rdfcore/rdfms-identity-anon-resources/test002.nt +15 -0
- data/spec/rdfcore/rdfms-identity-anon-resources/test002.rdf +33 -0
- data/spec/rdfcore/rdfms-identity-anon-resources/test003.nt +14 -0
- data/spec/rdfcore/rdfms-identity-anon-resources/test003.rdf +31 -0
- data/spec/rdfcore/rdfms-identity-anon-resources/test004.nt +15 -0
- data/spec/rdfcore/rdfms-identity-anon-resources/test004.rdf +33 -0
- data/spec/rdfcore/rdfms-identity-anon-resources/test005.nt +14 -0
- data/spec/rdfcore/rdfms-identity-anon-resources/test005.rdf +31 -0
- data/spec/rdfcore/rdfms-not-id-and-resource-attr/test001.nt +19 -0
- data/spec/rdfcore/rdfms-not-id-and-resource-attr/test001.rdf +29 -0
- data/spec/rdfcore/rdfms-not-id-and-resource-attr/test002.nt +15 -0
- data/spec/rdfcore/rdfms-not-id-and-resource-attr/test002.rdf +29 -0
- data/spec/rdfcore/rdfms-not-id-and-resource-attr/test004.nt +18 -0
- data/spec/rdfcore/rdfms-not-id-and-resource-attr/test004.rdf +29 -0
- data/spec/rdfcore/rdfms-not-id-and-resource-attr/test005.nt +19 -0
- data/spec/rdfcore/rdfms-not-id-and-resource-attr/test005.rdf +29 -0
- data/spec/rdfcore/rdfms-para196/test001.nt +17 -0
- data/spec/rdfcore/rdfms-para196/test001.rdf +35 -0
- data/spec/rdfcore/rdfms-rdf-id/error001.rdf +26 -0
- data/spec/rdfcore/rdfms-rdf-id/error002.rdf +26 -0
- data/spec/rdfcore/rdfms-rdf-id/error003.rdf +29 -0
- data/spec/rdfcore/rdfms-rdf-id/error004.rdf +27 -0
- data/spec/rdfcore/rdfms-rdf-id/error005.rdf +31 -0
- data/spec/rdfcore/rdfms-rdf-id/error006.rdf +26 -0
- data/spec/rdfcore/rdfms-rdf-id/error007.rdf +29 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-001.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-002.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-003.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-004.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-005.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-006.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-007.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-008.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-009.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-010.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-011.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-012.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-013.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-014.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-015.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-016.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-017.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-018.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-019.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/error-020.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-001.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-001.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-002.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-002.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-003.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-003.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-004.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-004.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-005.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-005.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-006.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-006.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-007.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-007.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-008.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-008.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-009.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-009.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-010.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-010.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-011.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-011.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-012.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-012.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-013.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-013.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-014.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-014.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-015.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-015.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-016.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-016.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-017.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-017.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-018.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-018.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-019.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-019.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-020.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-020.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-021.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-021.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-022.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-022.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-023.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-023.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-024.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-024.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-025.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-025.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-026.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-026.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-027.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-027.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-028.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-028.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-029.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-029.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-030.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-030.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-031.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-031.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-032.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-032.rdf +24 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-033.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-033.rdf +24 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-034.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-034.rdf +24 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-035.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-035.rdf +24 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-036.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-036.rdf +24 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-037.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/test-037.rdf +24 -0
- data/spec/rdfcore/rdfms-rdf-names-use/warn-001.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/warn-001.rdf +23 -0
- data/spec/rdfcore/rdfms-rdf-names-use/warn-002.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/warn-002.rdf +25 -0
- data/spec/rdfcore/rdfms-rdf-names-use/warn-003.nt +1 -0
- data/spec/rdfcore/rdfms-rdf-names-use/warn-003.rdf +24 -0
- data/spec/rdfcore/rdfms-reification-required/test001.nt +15 -0
- data/spec/rdfcore/rdfms-reification-required/test001.rdf +29 -0
- data/spec/rdfcore/rdfms-seq-representation/empty.nt +13 -0
- data/spec/rdfcore/rdfms-seq-representation/test001.nt +19 -0
- data/spec/rdfcore/rdfms-seq-representation/test001.rdf +33 -0
- data/spec/rdfcore/rdfms-seq-representation/test002.nt +14 -0
- data/spec/rdfcore/rdfms-seq-representation/test003a.nt +14 -0
- data/spec/rdfcore/rdfms-seq-representation/test003b.nt +14 -0
- data/spec/rdfcore/rdfms-seq-representation/test004.nt +14 -0
- data/spec/rdfcore/rdfms-syntax-incomplete/error001.rdf +26 -0
- data/spec/rdfcore/rdfms-syntax-incomplete/error002.rdf +26 -0
- data/spec/rdfcore/rdfms-syntax-incomplete/error003.rdf +29 -0
- data/spec/rdfcore/rdfms-syntax-incomplete/error004.rdf +25 -0
- data/spec/rdfcore/rdfms-syntax-incomplete/error005.rdf +25 -0
- data/spec/rdfcore/rdfms-syntax-incomplete/error006.rdf +28 -0
- data/spec/rdfcore/rdfms-syntax-incomplete/test001.nt +14 -0
- data/spec/rdfcore/rdfms-syntax-incomplete/test001.rdf +28 -0
- data/spec/rdfcore/rdfms-syntax-incomplete/test002.nt +19 -0
- data/spec/rdfcore/rdfms-syntax-incomplete/test002.rdf +38 -0
- data/spec/rdfcore/rdfms-syntax-incomplete/test003.nt +17 -0
- data/spec/rdfcore/rdfms-syntax-incomplete/test003.rdf +28 -0
- data/spec/rdfcore/rdfms-syntax-incomplete/test004.nt +21 -0
- data/spec/rdfcore/rdfms-syntax-incomplete/test004.rdf +36 -0
- data/spec/rdfcore/rdfms-uri-substructure/error001.nt +18 -0
- data/spec/rdfcore/rdfms-uri-substructure/test001.nt +17 -0
- data/spec/rdfcore/rdfms-uri-substructure/test001.rdf +29 -0
- data/spec/rdfcore/rdfms-xml-literal-namespaces/test001.nt +13 -0
- data/spec/rdfcore/rdfms-xml-literal-namespaces/test001.rdf +33 -0
- data/spec/rdfcore/rdfms-xml-literal-namespaces/test002.nt +14 -0
- data/spec/rdfcore/rdfms-xml-literal-namespaces/test002.rdf +47 -0
- data/spec/rdfcore/rdfms-xmllang/test001.nt +14 -0
- data/spec/rdfcore/rdfms-xmllang/test001.rdf +30 -0
- data/spec/rdfcore/rdfms-xmllang/test002.nt +14 -0
- data/spec/rdfcore/rdfms-xmllang/test002.rdf +29 -0
- data/spec/rdfcore/rdfms-xmllang/test003.nt +14 -0
- data/spec/rdfcore/rdfms-xmllang/test003.rdf +28 -0
- data/spec/rdfcore/rdfms-xmllang/test004.nt +14 -0
- data/spec/rdfcore/rdfms-xmllang/test004.rdf +28 -0
- data/spec/rdfcore/rdfms-xmllang/test005.nt +14 -0
- data/spec/rdfcore/rdfms-xmllang/test005.rdf +28 -0
- data/spec/rdfcore/rdfms-xmllang/test006.nt +14 -0
- data/spec/rdfcore/rdfms-xmllang/test006.rdf +29 -0
- data/spec/rdfcore/rdfms-xmllang/test007a.nt +14 -0
- data/spec/rdfcore/rdfms-xmllang/test007b.nt +14 -0
- data/spec/rdfcore/rdfms-xmllang/test007c.nt +14 -0
- data/spec/rdfcore/rdfs-container-membership-superProperty/not1C.rdf +13 -0
- data/spec/rdfcore/rdfs-container-membership-superProperty/not1P.rdf +14 -0
- data/spec/rdfcore/rdfs-domain-and-range/nonconclusions005.rdf +28 -0
- data/spec/rdfcore/rdfs-domain-and-range/nonconclusions006.rdf +28 -0
- data/spec/rdfcore/rdfs-domain-and-range/premises005.rdf +32 -0
- data/spec/rdfcore/rdfs-domain-and-range/premises006.rdf +32 -0
- data/spec/rdfcore/rdfs-domain-and-range/test001.nt +16 -0
- data/spec/rdfcore/rdfs-domain-and-range/test001.rdf +29 -0
- data/spec/rdfcore/rdfs-domain-and-range/test002.nt +16 -0
- data/spec/rdfcore/rdfs-domain-and-range/test002.rdf +29 -0
- data/spec/rdfcore/rdfs-entailment/test001.nt +16 -0
- data/spec/rdfcore/rdfs-entailment/test002.nt +15 -0
- data/spec/rdfcore/rdfs-no-cycles-in-subClassOf/test001.nt +18 -0
- data/spec/rdfcore/rdfs-no-cycles-in-subClassOf/test001.rdf +37 -0
- data/spec/rdfcore/rdfs-no-cycles-in-subPropertyOf/test001.nt +18 -0
- data/spec/rdfcore/rdfs-no-cycles-in-subPropertyOf/test001.rdf +40 -0
- data/spec/rdfcore/rdfs-subClassOf-a-Property/test001.nt +15 -0
- data/spec/rdfcore/rdfs-subPropertyOf-semantics/test001.nt +24 -0
- data/spec/rdfcore/rdfs-subPropertyOf-semantics/test002.nt +21 -0
- data/spec/rdfcore/statement-entailment/test001a.nt +12 -0
- data/spec/rdfcore/statement-entailment/test001b.nt +2 -0
- data/spec/rdfcore/statement-entailment/test002a.nt +2 -0
- data/spec/rdfcore/statement-entailment/test002b.nt +5 -0
- data/spec/rdfcore/tex-01/test001.rdf +34 -0
- data/spec/rdfcore/tex-01/test002.rdf +33 -0
- data/spec/rdfcore/unrecognised-xml-attributes/test001.nt +15 -0
- data/spec/rdfcore/unrecognised-xml-attributes/test001.rdf +31 -0
- data/spec/rdfcore/unrecognised-xml-attributes/test002.nt +14 -0
- data/spec/rdfcore/unrecognised-xml-attributes/test002.rdf +32 -0
- data/spec/rdfcore/xml-canon/test001.nt +16 -0
- data/spec/rdfcore/xml-canon/test001.rdf +28 -0
- data/spec/rdfcore/xmlbase/test001.nt +14 -0
- data/spec/rdfcore/xmlbase/test001.rdf +27 -0
- data/spec/rdfcore/xmlbase/test002.nt +14 -0
- data/spec/rdfcore/xmlbase/test002.rdf +28 -0
- data/spec/rdfcore/xmlbase/test003.nt +14 -0
- data/spec/rdfcore/xmlbase/test003.rdf +25 -0
- data/spec/rdfcore/xmlbase/test004.nt +18 -0
- data/spec/rdfcore/xmlbase/test004.rdf +27 -0
- data/spec/rdfcore/xmlbase/test006.nt +15 -0
- data/spec/rdfcore/xmlbase/test006.rdf +26 -0
- data/spec/rdfcore/xmlbase/test007.nt +14 -0
- data/spec/rdfcore/xmlbase/test007.rdf +25 -0
- data/spec/rdfcore/xmlbase/test008.nt +14 -0
- data/spec/rdfcore/xmlbase/test008.rdf +25 -0
- data/spec/rdfcore/xmlbase/test009.nt +14 -0
- data/spec/rdfcore/xmlbase/test009.rdf +26 -0
- data/spec/rdfcore/xmlbase/test010.nt +14 -0
- data/spec/rdfcore/xmlbase/test010.rdf +26 -0
- data/spec/rdfcore/xmlbase/test011.nt +14 -0
- data/spec/rdfcore/xmlbase/test011.rdf +27 -0
- data/spec/rdfcore/xmlbase/test013.nt +15 -0
- data/spec/rdfcore/xmlbase/test013.rdf +28 -0
- data/spec/rdfcore/xmlbase/test014.nt +15 -0
- data/spec/rdfcore/xmlbase/test014.rdf +28 -0
- data/spec/rdfcore/xmlsch-02/test001.rdf +34 -0
- data/spec/rdfcore/xmlsch-02/test002.rdf +34 -0
- data/spec/rdfcore/xmlsch-02/test003.rdf +37 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/swap_helper.rb +136 -0
- data/spec/swap_spec.rb +77 -0
- data/spec/swap_test/.DS_Store +0 -0
- data/spec/swap_test/animal.rdf +17 -0
- data/spec/swap_test/anon-prop.n3 +14 -0
- data/spec/swap_test/anonymous_loop.n3 +2 -0
- data/spec/swap_test/contexts.n3 +16 -0
- data/spec/swap_test/daml-pref.n3 +10 -0
- data/spec/swap_test/i18n/hiragana.n3 +22 -0
- data/spec/swap_test/i18n/n3string.n3 +4 -0
- data/spec/swap_test/list/itemType.rdf +12 -0
- data/spec/swap_test/lists-simple.n3 +40 -0
- data/spec/swap_test/lists.n3 +35 -0
- data/spec/swap_test/n3/.DS_Store +0 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10001.nt +3 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10002.nt +7 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10003.nt +3 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10004.nt +119 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10005.nt +3 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10006.nt +225 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10007.nt +79 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10008.nt +5 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10009.nt +13 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10010.nt +21 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10011.nt +9 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10012.nt +53 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10013.nt +19 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10014.nt +103 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10015.nt +103 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10016.nt +3 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10017.nt +151 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10018.nt +9 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10019.nt +3 -0
- data/spec/swap_test/n3/n3parser.tests_n3_10020.nt +13 -0
- data/spec/swap_test/n3parser.tests +160 -0
- data/spec/swap_test/nodeID/classes.n3 +9 -0
- data/spec/swap_test/nodeID/classes.ref.rdf +15 -0
- data/spec/swap_test/nodeID/ex1.rdf +15 -0
- data/spec/swap_test/norm/fix.rdf +33 -0
- data/spec/swap_test/owl-ex.rdf +150 -0
- data/spec/swap_test/ref/animal.n3 +11 -0
- data/spec/swap_test/ref/anon-prop-1.n3 +8 -0
- data/spec/swap_test/ref/anonymous_loop.ref +7 -0
- data/spec/swap_test/ref/bnode.n3 +6 -0
- data/spec/swap_test/ref/bnode.rdf +16 -0
- data/spec/swap_test/ref/colon-in-uri.n3 +15 -0
- data/spec/swap_test/ref/daml-ex.n3 +103 -0
- data/spec/swap_test/ref/daml-ont.n3 +289 -0
- data/spec/swap_test/ref/djb1a-out.n3 +4 -0
- data/spec/swap_test/ref/dot-dash.n3 +8 -0
- data/spec/swap_test/ref/in-xml-t.n3 +4 -0
- data/spec/swap_test/ref/itemType.n3 +9 -0
- data/spec/swap_test/ref/keywords1.n3 +11 -0
- data/spec/swap_test/ref/keywords2.n3 +11 -0
- data/spec/swap_test/ref/lists-simple-1.rdf +108 -0
- data/spec/swap_test/ref/lists.n3 +43 -0
- data/spec/swap_test/ref/lstring-out.n3 +20 -0
- data/spec/swap_test/ref/n3string.n3 +13 -0
- data/spec/swap_test/ref/no-last-nl.n3 +3 -0
- data/spec/swap_test/ref/numbers.n3 +18 -0
- data/spec/swap_test/ref/path1.n3 +8 -0
- data/spec/swap_test/ref/path2.n3 +39 -0
- data/spec/swap_test/ref/prefix1.rdf +31 -0
- data/spec/swap_test/ref/prefix3.rdf +31 -0
- data/spec/swap_test/ref/rdf-redefine.rdf +11 -0
- data/spec/swap_test/ref/reluri-1.rdf +18 -0
- data/spec/swap_test/ref/strquot.n3 +23 -0
- data/spec/swap_test/ref/strquot_a.n3 +23 -0
- data/spec/swap_test/ref/xml-base3.n3 +5 -0
- data/spec/swap_test/ref/xml-redefine.rdf +20 -0
- data/spec/swap_test/ref/xml-redefine2.rdf +23 -0
- data/spec/swap_test/ref/xml-syntax-basic-serialization.rdf +10 -0
- data/spec/swap_test/ref/xmllit.nt +3 -0
- data/spec/swap_test/regression.n3 +231 -0
- data/spec/swap_test/reluri-1.n3 +10 -0
- data/spec/swap_test/strquot.n3 +23 -0
- data/spec/swap_test/syntax/colon-in-uri.rdf +27 -0
- data/spec/swap_test/syntax/djb1a.n3 +3 -0
- data/spec/swap_test/syntax/dot-dash.n3 +15 -0
- data/spec/swap_test/syntax/equals1.n3 +1 -0
- data/spec/swap_test/syntax/equals2.n3 +1 -0
- data/spec/swap_test/syntax/keywords1.n3 +17 -0
- data/spec/swap_test/syntax/keywords2.n3 +18 -0
- data/spec/swap_test/syntax/lstring.n3 +26 -0
- data/spec/swap_test/syntax/neg-formula-predicate.n3 +1 -0
- data/spec/swap_test/syntax/neg-keywords3.n3 +1 -0
- data/spec/swap_test/syntax/neg-literal-predicate.n3 +1 -0
- data/spec/swap_test/syntax/neg-single-quote.n3 +1 -0
- data/spec/swap_test/syntax/neg-thisadoc.n3 +1 -0
- data/spec/swap_test/syntax/no-last-nl.n3 +2 -0
- data/spec/swap_test/syntax/numbers.n3 +26 -0
- data/spec/swap_test/syntax/path1.n3 +23 -0
- data/spec/swap_test/syntax/path2.n3 +31 -0
- data/spec/swap_test/syntax/qvars1.n3 +19 -0
- data/spec/swap_test/syntax/qvars2.n3 +19 -0
- data/spec/swap_test/syntax/this-quantifiers.n3 +164 -0
- data/spec/swap_test/syntax/this-rules.n3 +43 -0
- data/spec/swap_test/syntax/too-nested.n3 +25 -0
- data/spec/swap_test/syntax/trailing-semicolon.n3 +12 -0
- data/spec/swap_test/syntax/zero-objects.n3 +1 -0
- data/spec/swap_test/syntax/zero-predicates.n3 +3 -0
- data/spec/swap_test/tests-work.txt +25 -0
- data/spec/swap_test/xml-syntax/basic-serialization.n3 +8 -0
- data/spec/swap_test/xml-syntax/in-xml.xml +13 -0
- data/spec/swap_test/xml-syntax/non-ascii-pred.rdf +14 -0
- data/spec/swap_test/xml-syntax/rdf_prefix.n3 +2 -0
- data/spec/swap_test/xml-syntax/xml_prefix.n3 +7 -0
- data/spec/swap_test/xml-syntax/xml_prefix2.n3 +9 -0
- data/spec/swap_test/xml-syntax/xmlbase3.rdf +10 -0
- data/spec/swap_test/xml-syntax/xmllit.rdf +33 -0
- data/spec/triple_spec.rb +236 -0
- data/spec/turtle/README.txt +20 -0
- data/spec/turtle/bad-00.ttl +2 -0
- data/spec/turtle/bad-01.ttl +3 -0
- data/spec/turtle/bad-02.ttl +3 -0
- data/spec/turtle/bad-03.ttl +3 -0
- data/spec/turtle/bad-04.ttl +3 -0
- data/spec/turtle/bad-05.ttl +4 -0
- data/spec/turtle/bad-06.ttl +3 -0
- data/spec/turtle/bad-07.ttl +4 -0
- data/spec/turtle/bad-08.ttl +2 -0
- data/spec/turtle/bad-09.ttl +3 -0
- data/spec/turtle/bad-10.ttl +3 -0
- data/spec/turtle/bad-11.ttl +3 -0
- data/spec/turtle/bad-12.ttl +3 -0
- data/spec/turtle/bad-13.ttl +3 -0
- data/spec/turtle/bad-14.ttl +6 -0
- data/spec/turtle/manifest-bad.ttl +88 -0
- data/spec/turtle/manifest.ttl +215 -0
- data/spec/turtle/rdf-schema.out +126 -0
- data/spec/turtle/rdf-schema.ttl +156 -0
- data/spec/turtle/rdfq-results.out +36 -0
- data/spec/turtle/rdfq-results.ttl +39 -0
- data/spec/turtle/rdfs-namespace.out +131 -0
- data/spec/turtle/rdfs-namespace.ttl +160 -0
- data/spec/turtle/test-00.out +1 -0
- data/spec/turtle/test-00.ttl +2 -0
- data/spec/turtle/test-01.out +3 -0
- data/spec/turtle/test-01.ttl +7 -0
- data/spec/turtle/test-02.out +3 -0
- data/spec/turtle/test-02.ttl +5 -0
- data/spec/turtle/test-03.out +3 -0
- data/spec/turtle/test-03.ttl +5 -0
- data/spec/turtle/test-04.out +2 -0
- data/spec/turtle/test-04.ttl +4 -0
- data/spec/turtle/test-05.out +4 -0
- data/spec/turtle/test-05.ttl +4 -0
- data/spec/turtle/test-06.out +1 -0
- data/spec/turtle/test-06.ttl +3 -0
- data/spec/turtle/test-07.out +5 -0
- data/spec/turtle/test-07.ttl +3 -0
- data/spec/turtle/test-08.out +1 -0
- data/spec/turtle/test-08.ttl +3 -0
- data/spec/turtle/test-09.out +4 -0
- data/spec/turtle/test-09.ttl +10 -0
- data/spec/turtle/test-10.out +5 -0
- data/spec/turtle/test-10.ttl +5 -0
- data/spec/turtle/test-11.out +4 -0
- data/spec/turtle/test-11.ttl +10 -0
- data/spec/turtle/test-12.out +4 -0
- data/spec/turtle/test-12.ttl +9 -0
- data/spec/turtle/test-13.out +2 -0
- data/spec/turtle/test-13.ttl +7 -0
- data/spec/turtle/test-14.out +10000 -0
- data/spec/turtle/test-14.ttl +10002 -0
- data/spec/turtle/test-15.out +10000 -0
- data/spec/turtle/test-15.ttl +3 -0
- data/spec/turtle/test-16.out +10000 -0
- data/spec/turtle/test-16.ttl +10002 -0
- data/spec/turtle/test-17.out +1 -0
- data/spec/turtle/test-17.ttl +6 -0
- data/spec/turtle/test-18.out +2 -0
- data/spec/turtle/test-18.ttl +9 -0
- data/spec/turtle/test-19.out +1 -0
- data/spec/turtle/test-19.ttl +4 -0
- data/spec/turtle/test-20.out +2 -0
- data/spec/turtle/test-20.ttl +6 -0
- data/spec/turtle/test-21.out +3 -0
- data/spec/turtle/test-21.ttl +4 -0
- data/spec/turtle/test-22.out +3 -0
- data/spec/turtle/test-22.ttl +4 -0
- data/spec/turtle/test-23.out +1 -0
- data/spec/turtle/test-23.ttl +3 -0
- data/spec/turtle/test-24.out +2 -0
- data/spec/turtle/test-24.ttl +3 -0
- data/spec/turtle/test-25.out +7 -0
- data/spec/turtle/test-25.ttl +14 -0
- data/spec/turtle/test-26.out +1 -0
- data/spec/turtle/test-26.ttl +4 -0
- data/spec/turtle/test-27.out +1 -0
- data/spec/turtle/test-27.ttl +5 -0
- data/spec/turtle/test-28-out.ttl +6 -0
- data/spec/turtle/test-28.out +22 -0
- data/spec/turtle/test-28.ttl +22 -0
- data/spec/turtle/test-29.out +1 -0
- data/spec/turtle/test-29.ttl +1 -0
- data/spec/turtle/test-30.out +5 -0
- data/spec/turtle/test-30.ttl +12 -0
- data/spec/turtle_serializer_spec.rb +226 -0
- data/spec/turtle_spec.rb +64 -0
- metadata +711 -0
data/.gitignore
ADDED
data/.yardopts
ADDED
data/AUTHORS
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
* Gregg Kellogg <gregg@kellogg-assoc.com>
|
data/History.txt
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
= RDF::N3 reader/writer
|
2
|
+
|
3
|
+
Notation-3 (n3-rdf) and Turtle reader/writer for RDF.rb.
|
4
|
+
|
5
|
+
== DESCRIPTION:
|
6
|
+
|
7
|
+
RDF::N3 is an Notation-3 (n3-rdf) parser for Ruby using the RDF.rb library suite.
|
8
|
+
|
9
|
+
== FEATURES:
|
10
|
+
RDF::N3 parses Notation-3, Turtle and N-Triples into statements or triples. It also serializes to Turtle.
|
11
|
+
|
12
|
+
* Fully compliant N3-rdf parser (N3-rdf level)
|
13
|
+
|
14
|
+
Install with 'gem install rdf-n3'
|
15
|
+
|
16
|
+
Based on original parser by Patrick Sinclair (metade)
|
17
|
+
|
18
|
+
== Usage:
|
19
|
+
Instantiate a parser and parse source, specifying type and base-URL
|
20
|
+
|
21
|
+
RDF::N3::Reader.open("etc/foaf.n3") do |reader|
|
22
|
+
reader.each_statement do |statement|
|
23
|
+
puts statement.inspect
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
== Dependencies
|
28
|
+
* [RDF.rb](http://rubygems.org/gems/rdf) (>= 0.1.6)
|
29
|
+
* [Treetop](http://rubygems.org/gems/treetop) (>= 1.4.0) -- For generating parser only, not necessary for runtime
|
30
|
+
|
31
|
+
== Resources:
|
32
|
+
* Distiller[http://kellogg-assoc/distiller]
|
33
|
+
* RDoc[http://rdoc.info/projects/gkellogg/rdf-n3]
|
34
|
+
* History[http://github.com/gkellogg/rdf-n3/blob/master/History.txt]
|
35
|
+
* "N3 Specification"[http://www.w3.org/DesignIssues/Notation3.html]
|
36
|
+
* "N3 Primer"[http://www.w3.org/2000/10/swap/Primer.html]
|
37
|
+
* Turtle[http://www.w3.org/TeamSubmission/turtle/]
|
38
|
+
* "RDF Tests"[http://www.w3.org/2000/10/rdf-tests/rdfcore/allTestCases.html]
|
39
|
+
* "W3C Turtle Test suite"[http://www.w3.org/2000/10/swap/test/regression.n3]
|
40
|
+
|
41
|
+
== LICENSE:
|
42
|
+
|
43
|
+
(The MIT License)
|
44
|
+
|
45
|
+
Copyright (c) 2009-2010 Gregg Kellogg
|
46
|
+
|
47
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
48
|
+
a copy of this software and associated documentation files (the
|
49
|
+
'Software'), to deal in the Software without restriction, including
|
50
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
51
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
52
|
+
permit persons to whom the Software is furnished to do so, subject to
|
53
|
+
the following conditions:
|
54
|
+
|
55
|
+
The above copyright notice and this permission notice shall be
|
56
|
+
included in all copies or substantial portions of the Software.
|
57
|
+
|
58
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
59
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
60
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
61
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
62
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
63
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
64
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
65
|
+
|
66
|
+
== FEEDBACK
|
67
|
+
|
68
|
+
* gregg@kellogg-assoc.com
|
69
|
+
* rubygems.org/rdf-n3
|
70
|
+
* github.com/gkellogg/rdf-n3
|
71
|
+
* gkellogg.lighthouseapp.com for bug reports
|
72
|
+
* public-rdf-ruby mailing list on w3.org
|
data/Rakefile
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
begin
|
4
|
+
gem 'jeweler'
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gemspec|
|
7
|
+
gemspec.name = "rdf-n3"
|
8
|
+
gemspec.summary = "Notation-3 (n3-rdf) and Turtle reader/writer for RDF.rb."
|
9
|
+
gemspec.description = <<-DESCRIPTION
|
10
|
+
RDF::N3 is an Notation-3 (n3-rdf) parser for Ruby using the RDF.rb library suite.
|
11
|
+
DESCRIPTION
|
12
|
+
gemspec.email = "gregg@kellogg-assoc.com"
|
13
|
+
gemspec.homepage = "http://github.com/gkellogg/rdf-rdfa"
|
14
|
+
gemspec.authors = ["Gregg Kellogg"]
|
15
|
+
gemspec.add_dependency('rdf', '>= 0.1.6')
|
16
|
+
gemspec.add_development_dependency('rspec')
|
17
|
+
gemspec.add_development_dependency('rdf-spec')
|
18
|
+
gemspec.add_development_dependency('treetop', '>= 1.4.0')
|
19
|
+
gemspec.extra_rdoc_files = %w(README.rdoc History.txt AUTHORS)
|
20
|
+
end
|
21
|
+
Jeweler::GemcutterTasks.new
|
22
|
+
rescue LoadError
|
23
|
+
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
24
|
+
end
|
25
|
+
|
26
|
+
require 'spec/rake/spectask'
|
27
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
28
|
+
spec.libs << 'lib' << 'spec'
|
29
|
+
spec.spec_files = FileList['spec/*_spec.rb']
|
30
|
+
end
|
31
|
+
|
32
|
+
desc "Run specs through RCov"
|
33
|
+
Spec::Rake::SpecTask.new("spec:rcov") do |spec|
|
34
|
+
spec.libs << 'lib' << 'spec'
|
35
|
+
spec.pattern = 'spec/*_spec.rb'
|
36
|
+
spec.rcov = true
|
37
|
+
end
|
38
|
+
|
39
|
+
desc "Generate HTML report specs"
|
40
|
+
Spec::Rake::SpecTask.new("doc:spec") do |spec|
|
41
|
+
spec.libs << 'lib' << 'spec'
|
42
|
+
spec.spec_files = FileList['spec/*_spec.rb']
|
43
|
+
spec.spec_opts = ["--format", "html:doc/spec.html"]
|
44
|
+
end
|
45
|
+
|
46
|
+
task :default => :spec
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.1
|
data/example.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift(File.join(File.dirname(__FILE__), 'lib'))
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
require 'rdf/rdfa'
|
7
|
+
|
8
|
+
data = <<-EOF;
|
9
|
+
@prefix dc: <http://purl.org/dc/elements/1.1/>.
|
10
|
+
@prefix po: <http://purl.org/ontology/po/>.
|
11
|
+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
|
12
|
+
_:broadcast
|
13
|
+
a po:Broadcast;
|
14
|
+
po:schedule_date """2008-06-24T12:00:00Z""";
|
15
|
+
po:broadcast_of _:version;
|
16
|
+
po:broadcast_on <http://www.bbc.co.uk/programmes/service/6music>;
|
17
|
+
.
|
18
|
+
_:version
|
19
|
+
a po:Version;
|
20
|
+
.
|
21
|
+
<http://www.bbc.co.uk/programmes/b0072l93>
|
22
|
+
dc:title """Nemone""";
|
23
|
+
a po:Brand;
|
24
|
+
.
|
25
|
+
<http://www.bbc.co.uk/programmes/b00c735d>
|
26
|
+
a po:Episode;
|
27
|
+
po:episode <http://www.bbc.co.uk/programmes/b0072l93>;
|
28
|
+
po:version _:version;
|
29
|
+
po:long_synopsis """Actor and comedian Rhys Darby chats to Nemone.""";
|
30
|
+
dc:title """Nemone""";
|
31
|
+
po:synopsis """Actor and comedian Rhys Darby chats to Nemone.""";
|
32
|
+
.
|
33
|
+
<http://www.bbc.co.uk/programmes/service/6music>
|
34
|
+
a po:Service;
|
35
|
+
dc:title """BBC 6 Music""";
|
36
|
+
.
|
37
|
+
|
38
|
+
#_:abcd a po:Episode.
|
39
|
+
EOF
|
40
|
+
|
41
|
+
RDF::N3::Reader.new(data, :base_uri => 'http://www.bbc.co.uk/programmes/on-now.n3') do |reader|
|
42
|
+
reader.each_statement do |statement|
|
43
|
+
statement.inspect!
|
44
|
+
end
|
45
|
+
end
|
data/lib/rdf/n3.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
2
|
+
require 'rdf'
|
3
|
+
|
4
|
+
module RDF
|
5
|
+
##
|
6
|
+
# **`RDF::N3`** is an Notation-3 plugin for RDF.rb.
|
7
|
+
#
|
8
|
+
# @example Requiring the `RDF::N3` module
|
9
|
+
# require 'rdf/rdfxml'
|
10
|
+
#
|
11
|
+
# @example Parsing RDF statements from an N3 file
|
12
|
+
# RDF::N3::Reader.open("etc/foaf.n3") do |reader|
|
13
|
+
# reader.each_statement do |statement|
|
14
|
+
# puts statement.inspect
|
15
|
+
# end
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
# @see http://rdf.rubyforge.org/
|
19
|
+
# @see http://www.w3.org/TR/REC-rdf-syntax/
|
20
|
+
#
|
21
|
+
# @author [Gregg Kellogg](http://kellogg-assoc.com/)
|
22
|
+
module N3
|
23
|
+
require 'n3/format'
|
24
|
+
require 'n3/vocab'
|
25
|
+
require 'n3/patches/array_hacks'
|
26
|
+
require 'n3/patches/rdf_escape'
|
27
|
+
autoload :Reader, 'rdf/n3/reader'
|
28
|
+
autoload :VERSION, 'rdf/n3/version'
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module RDF::N3
|
2
|
+
##
|
3
|
+
# RDFa format specification.
|
4
|
+
#
|
5
|
+
# @example Obtaining an RDFa format class
|
6
|
+
# RDF::Format.for(:n3) #=> RDF::N3::Format
|
7
|
+
# RDF::Format.for(:ttl) #=> RDF::N3::Format
|
8
|
+
# RDF::Format.for("etc/foaf.ttl")
|
9
|
+
# RDF::Format.for("etc/foaf.n3")
|
10
|
+
# RDF::Format.for(:file_name => "etc/foaf.ttl")
|
11
|
+
# RDF::Format.for(:file_name => "etc/foaf.n3")
|
12
|
+
# RDF::Format.for(:file_extension => "ttl")
|
13
|
+
# RDF::Format.for(:file_extension => "n3")
|
14
|
+
# RDF::Format.for(:content_type => "text/turtle")
|
15
|
+
# RDF::Format.for(:content_type => "text/n3")
|
16
|
+
#
|
17
|
+
# @example Obtaining serialization format MIME types
|
18
|
+
# RDF::Format.content_types #=> {"text/turtle" => [RDF::N3::Format]}
|
19
|
+
# RDF::Format.content_types #=> {"text/n3")" => [RDF::N3::Format]}
|
20
|
+
#
|
21
|
+
# @example Obtaining serialization format file extension mappings
|
22
|
+
# RDF::Format.file_extensions #=> {:ttl => "text/turtle"}
|
23
|
+
# RDF::Format.file_extensions #=> {:n3 => "text/n3"}
|
24
|
+
#
|
25
|
+
# @see http://www.w3.org/TR/rdf-testcases/#ntriples
|
26
|
+
class Format < RDF::Format
|
27
|
+
content_type 'text/turtle', :extension => :ttl
|
28
|
+
content_type 'text/n3', :extension => :n3
|
29
|
+
content_encoding 'utf-8'
|
30
|
+
|
31
|
+
reader { RDF::N3::Reader }
|
32
|
+
writer { RDF::N3::Writer }
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'iconv'
|
3
|
+
|
4
|
+
class String
|
5
|
+
#private
|
6
|
+
# "Borrowed" from JSON utf8_to_json
|
7
|
+
RDF_MAP = {
|
8
|
+
"\x0" => '\u0000',
|
9
|
+
"\x1" => '\u0001',
|
10
|
+
"\x2" => '\u0002',
|
11
|
+
"\x3" => '\u0003',
|
12
|
+
"\x4" => '\u0004',
|
13
|
+
"\x5" => '\u0005',
|
14
|
+
"\x6" => '\u0006',
|
15
|
+
"\x7" => '\u0007',
|
16
|
+
"\b" => '\b',
|
17
|
+
"\t" => '\t',
|
18
|
+
"\n" => '\n',
|
19
|
+
"\xb" => '\u000B',
|
20
|
+
"\f" => '\f',
|
21
|
+
"\r" => '\r',
|
22
|
+
"\xe" => '\u000E',
|
23
|
+
"\xf" => '\u000F',
|
24
|
+
"\x10" => '\u0010',
|
25
|
+
"\x11" => '\u0011',
|
26
|
+
"\x12" => '\u0012',
|
27
|
+
"\x13" => '\u0013',
|
28
|
+
"\x14" => '\u0014',
|
29
|
+
"\x15" => '\u0015',
|
30
|
+
"\x16" => '\u0016',
|
31
|
+
"\x17" => '\u0017',
|
32
|
+
"\x18" => '\u0018',
|
33
|
+
"\x19" => '\u0019',
|
34
|
+
"\x1a" => '\u001A',
|
35
|
+
"\x1b" => '\u001B',
|
36
|
+
"\x1c" => '\u001C',
|
37
|
+
"\x1d" => '\u001D',
|
38
|
+
"\x1e" => '\u001E',
|
39
|
+
"\x1f" => '\u001F',
|
40
|
+
'"' => '\"',
|
41
|
+
'\\' => '\\\\',
|
42
|
+
'/' => '/',
|
43
|
+
} # :nodoc:
|
44
|
+
|
45
|
+
if defined?(::Encoding)
|
46
|
+
# Funky way to define constant, but if parsed in 1.8 it generates an 'invalid regular expression' error otherwise
|
47
|
+
eval %(ESCAPE_RE = %r([\u{80}-\u{10ffff}]))
|
48
|
+
else
|
49
|
+
ESCAPE_RE = %r(
|
50
|
+
[\xc2-\xdf][\x80-\xbf] |
|
51
|
+
[\xe0-\xef][\x80-\xbf]{2} |
|
52
|
+
[\xf0-\xf4][\x80-\xbf]{3}
|
53
|
+
)nx
|
54
|
+
end
|
55
|
+
|
56
|
+
# Convert a UTF8 encoded Ruby string _string_ to an escaped string, encoded with
|
57
|
+
# UTF16 big endian characters as \U????, and return it.
|
58
|
+
#
|
59
|
+
# \\:: Backslash
|
60
|
+
# \':: Single quote
|
61
|
+
# \":: Double quot
|
62
|
+
# \n:: ASCII Linefeed
|
63
|
+
# \r:: ASCII Carriage Return
|
64
|
+
# \t:: ASCCII Horizontal Tab
|
65
|
+
# \uhhhh:: character in BMP with Unicode value U+hhhh
|
66
|
+
# \U00hhhhhh:: character in plane 1-16 with Unicode value U+hhhhhh
|
67
|
+
def rdf_escape
|
68
|
+
string = self + '' # XXX workaround: avoid buffer sharing
|
69
|
+
string.gsub!(/["\\\/\x0-\x1f]/) { RDF_MAP[$&] }
|
70
|
+
if defined?(::Encoding)
|
71
|
+
string.force_encoding(Encoding::UTF_8)
|
72
|
+
string.gsub!(ESCAPE_RE) { |c|
|
73
|
+
s = c.dump.sub(/\"\\u\{(.+)\}\"/, '\1').upcase
|
74
|
+
(s.length <= 4 ? "\\u0000"[0,6-s.length] : "\\U00000000"[0,10-s.length]) + s
|
75
|
+
}
|
76
|
+
string.force_encoding(Encoding::ASCII_8BIT)
|
77
|
+
else
|
78
|
+
string.gsub!(ESCAPE_RE) { |c|
|
79
|
+
s = Iconv.new('utf-16be', 'utf-8').iconv(c).unpack('H*').first.upcase
|
80
|
+
"\\u" + s
|
81
|
+
}
|
82
|
+
end
|
83
|
+
string
|
84
|
+
end
|
85
|
+
|
86
|
+
# Unescape characters in strings.
|
87
|
+
RDF_UNESCAPE_MAP = Hash.new { |h, k| h[k] = k.chr }
|
88
|
+
RDF_UNESCAPE_MAP.update({
|
89
|
+
?" => '"',
|
90
|
+
?\\ => '\\',
|
91
|
+
?/ => '/',
|
92
|
+
?b => "\b",
|
93
|
+
?f => "\f",
|
94
|
+
?n => "\n",
|
95
|
+
?r => "\r",
|
96
|
+
?t => "\t",
|
97
|
+
?u => nil,
|
98
|
+
})
|
99
|
+
|
100
|
+
if defined?(::Encoding)
|
101
|
+
UNESCAPE_RE = %r(
|
102
|
+
(?:\\[\\bfnrt"/]) # Escaped control characters, " and /
|
103
|
+
|(?:\\U00\h{6}) # 6 byte escaped Unicode
|
104
|
+
|(?:\\u\h{4}) # 4 byte escaped Unicode
|
105
|
+
)x
|
106
|
+
else
|
107
|
+
UNESCAPE_RE = %r((?:\\[\\bfnrt"/]|(?:\\u(?:[A-Fa-f\d]{4}))+|\\[\x20-\xff]))n
|
108
|
+
end
|
109
|
+
|
110
|
+
# Reverse operation of escape
|
111
|
+
# From JSON parser
|
112
|
+
def rdf_unescape
|
113
|
+
return '' if self.empty?
|
114
|
+
string = self.gsub(UNESCAPE_RE) do |c|
|
115
|
+
case c[1,1]
|
116
|
+
when 'U'
|
117
|
+
raise RdfException, "Long Unicode escapes no supported in Ruby 1.8" unless defined?(::Encoding)
|
118
|
+
eval(c.sub(/\\U00(\h+)/, '"\u{\1}"'))
|
119
|
+
when 'u'
|
120
|
+
bytes = [c[2, 2].to_i(16), c[4, 2].to_i(16)]
|
121
|
+
Iconv.new('utf-8', 'utf-16').iconv(bytes.pack("C*"))
|
122
|
+
else
|
123
|
+
RDF_UNESCAPE_MAP[c[1]]
|
124
|
+
end
|
125
|
+
end
|
126
|
+
string.force_encoding(Encoding::UTF_8) if defined?(::Encoding)
|
127
|
+
string
|
128
|
+
rescue Iconv::Failure => e
|
129
|
+
raise RdfException, "Caught #{e.class}: #{e}"
|
130
|
+
end
|
131
|
+
end unless String.method_defined?(:rdf_escape)
|
@@ -0,0 +1,131 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'iconv'
|
3
|
+
|
4
|
+
class String
|
5
|
+
#private
|
6
|
+
# "Borrowed" from JSON utf8_to_json
|
7
|
+
RDF_MAP = {
|
8
|
+
"\x0" => '\u0000',
|
9
|
+
"\x1" => '\u0001',
|
10
|
+
"\x2" => '\u0002',
|
11
|
+
"\x3" => '\u0003',
|
12
|
+
"\x4" => '\u0004',
|
13
|
+
"\x5" => '\u0005',
|
14
|
+
"\x6" => '\u0006',
|
15
|
+
"\x7" => '\u0007',
|
16
|
+
"\b" => '\b',
|
17
|
+
"\t" => '\t',
|
18
|
+
"\n" => '\n',
|
19
|
+
"\xb" => '\u000B',
|
20
|
+
"\f" => '\f',
|
21
|
+
"\r" => '\r',
|
22
|
+
"\xe" => '\u000E',
|
23
|
+
"\xf" => '\u000F',
|
24
|
+
"\x10" => '\u0010',
|
25
|
+
"\x11" => '\u0011',
|
26
|
+
"\x12" => '\u0012',
|
27
|
+
"\x13" => '\u0013',
|
28
|
+
"\x14" => '\u0014',
|
29
|
+
"\x15" => '\u0015',
|
30
|
+
"\x16" => '\u0016',
|
31
|
+
"\x17" => '\u0017',
|
32
|
+
"\x18" => '\u0018',
|
33
|
+
"\x19" => '\u0019',
|
34
|
+
"\x1a" => '\u001A',
|
35
|
+
"\x1b" => '\u001B',
|
36
|
+
"\x1c" => '\u001C',
|
37
|
+
"\x1d" => '\u001D',
|
38
|
+
"\x1e" => '\u001E',
|
39
|
+
"\x1f" => '\u001F',
|
40
|
+
'"' => '\"',
|
41
|
+
'\\' => '\\\\',
|
42
|
+
'/' => '/',
|
43
|
+
} # :nodoc:
|
44
|
+
|
45
|
+
if defined?(::Encoding)
|
46
|
+
# Funky way to define constant, but if parsed in 1.8 it generates an 'invalid regular expression' error otherwise
|
47
|
+
eval %(ESCAPE_RE = %r([\u{80}-\u{10ffff}]))
|
48
|
+
else
|
49
|
+
ESCAPE_RE = %r(
|
50
|
+
[\xc2-\xdf][\x80-\xbf] |
|
51
|
+
[\xe0-\xef][\x80-\xbf]{2} |
|
52
|
+
[\xf0-\xf4][\x80-\xbf]{3}
|
53
|
+
)nx
|
54
|
+
end
|
55
|
+
|
56
|
+
# Convert a UTF8 encoded Ruby string _string_ to an escaped string, encoded with
|
57
|
+
# UTF16 big endian characters as \U????, and return it.
|
58
|
+
#
|
59
|
+
# \\:: Backslash
|
60
|
+
# \':: Single quote
|
61
|
+
# \":: Double quot
|
62
|
+
# \n:: ASCII Linefeed
|
63
|
+
# \r:: ASCII Carriage Return
|
64
|
+
# \t:: ASCCII Horizontal Tab
|
65
|
+
# \uhhhh:: character in BMP with Unicode value U+hhhh
|
66
|
+
# \U00hhhhhh:: character in plane 1-16 with Unicode value U+hhhhhh
|
67
|
+
def rdf_escape
|
68
|
+
string = self + '' # XXX workaround: avoid buffer sharing
|
69
|
+
string.gsub!(/["\\\/\x0-\x1f]/) { RDF_MAP[$&] }
|
70
|
+
if defined?(::Encoding)
|
71
|
+
string.force_encoding(Encoding::UTF_8)
|
72
|
+
string.gsub!(ESCAPE_RE) { |c|
|
73
|
+
s = c.dump.sub(/\"\\u\{(.+)\}\"/, '\1').upcase
|
74
|
+
(s.length <= 4 ? "\\u0000"[0,6-s.length] : "\\U00000000"[0,10-s.length]) + s
|
75
|
+
}
|
76
|
+
string.force_encoding(Encoding::ASCII_8BIT)
|
77
|
+
else
|
78
|
+
string.gsub!(ESCAPE_RE) { |c|
|
79
|
+
s = Iconv.new('utf-16be', 'utf-8').iconv(c).unpack('H*').first.upcase
|
80
|
+
"\\u" + s
|
81
|
+
}
|
82
|
+
end
|
83
|
+
string
|
84
|
+
end
|
85
|
+
|
86
|
+
# Unescape characters in strings.
|
87
|
+
RDF_UNESCAPE_MAP = Hash.new { |h, k| h[k] = k.chr }
|
88
|
+
RDF_UNESCAPE_MAP.update({
|
89
|
+
?" => '"',
|
90
|
+
?\\ => '\\',
|
91
|
+
?/ => '/',
|
92
|
+
?b => "\b",
|
93
|
+
?f => "\f",
|
94
|
+
?n => "\n",
|
95
|
+
?r => "\r",
|
96
|
+
?t => "\t",
|
97
|
+
?u => nil,
|
98
|
+
})
|
99
|
+
|
100
|
+
if defined?(::Encoding)
|
101
|
+
UNESCAPE_RE = %r(
|
102
|
+
(?:\\[\\bfnrt"/]) # Escaped control characters, " and /
|
103
|
+
|(?:\\U00\h{6}) # 6 byte escaped Unicode
|
104
|
+
|(?:\\u\h{4}) # 4 byte escaped Unicode
|
105
|
+
)x
|
106
|
+
else
|
107
|
+
UNESCAPE_RE = %r((?:\\[\\bfnrt"/]|(?:\\u(?:[A-Fa-f\d]{4}))+|\\[\x20-\xff]))n
|
108
|
+
end
|
109
|
+
|
110
|
+
# Reverse operation of escape
|
111
|
+
# From JSON parser
|
112
|
+
def rdf_unescape
|
113
|
+
return '' if self.empty?
|
114
|
+
string = self.gsub(UNESCAPE_RE) do |c|
|
115
|
+
case c[1,1]
|
116
|
+
when 'U'
|
117
|
+
raise RdfException, "Long Unicode escapes no supported in Ruby 1.8" unless defined?(::Encoding)
|
118
|
+
eval(c.sub(/\\U00(\h+)/, '"\u{\1}"'))
|
119
|
+
when 'u'
|
120
|
+
bytes = [c[2, 2].to_i(16), c[4, 2].to_i(16)]
|
121
|
+
Iconv.new('utf-8', 'utf-16').iconv(bytes.pack("C*"))
|
122
|
+
else
|
123
|
+
RDF_UNESCAPE_MAP[c[1]]
|
124
|
+
end
|
125
|
+
end
|
126
|
+
string.force_encoding(Encoding::UTF_8) if defined?(::Encoding)
|
127
|
+
string
|
128
|
+
rescue Iconv::Failure => e
|
129
|
+
raise RdfException, "Caught #{e.class}: #{e}"
|
130
|
+
end
|
131
|
+
end
|