rdfa_parser 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +7 -0
- data/History.txt +47 -0
- data/README.rdoc +61 -0
- data/Rakefile +52 -0
- data/VERSION +1 -0
- data/bin/rdfa_parser +55 -0
- data/lib/rdfa_parser.rb +35 -0
- data/lib/rdfa_parser/bnode.rb +92 -0
- data/lib/rdfa_parser/exceptions.rb +11 -0
- data/lib/rdfa_parser/graph.rb +222 -0
- data/lib/rdfa_parser/literal.rb +375 -0
- data/lib/rdfa_parser/namespace.rb +91 -0
- data/lib/rdfa_parser/rdfa_parser.rb +415 -0
- data/lib/rdfa_parser/triple.rb +100 -0
- data/lib/rdfa_parser/uriref.rb +94 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/spec/bnode_spec.rb +51 -0
- data/spec/graph_spec.rb +230 -0
- data/spec/literal_spec.rb +282 -0
- data/spec/matchers.rb +134 -0
- data/spec/namespace_spec.rb +61 -0
- data/spec/rdfa_helper.rb +127 -0
- data/spec/rdfa_parser_spec.rb +119 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +23 -0
- data/spec/triple_spec.rb +145 -0
- data/spec/uriref_spec.rb +117 -0
- data/spec/xhtml1-testcases/.sparql +13 -0
- data/spec/xhtml1-testcases/0001.nt +1 -0
- data/spec/xhtml1-testcases/0001.sparql +3 -0
- data/spec/xhtml1-testcases/0001.xhtml +11 -0
- data/spec/xhtml1-testcases/0002.sparql +3 -0
- data/spec/xhtml1-testcases/0003.sparql +3 -0
- data/spec/xhtml1-testcases/0006.nt +2 -0
- data/spec/xhtml1-testcases/0006.sparql +8 -0
- data/spec/xhtml1-testcases/0006.xhtml +16 -0
- data/spec/xhtml1-testcases/0007.nt +3 -0
- data/spec/xhtml1-testcases/0007.sparql +5 -0
- data/spec/xhtml1-testcases/0007.xhtml +16 -0
- data/spec/xhtml1-testcases/0008.nt +1 -0
- data/spec/xhtml1-testcases/0008.sparql +3 -0
- data/spec/xhtml1-testcases/0008.xhtml +16 -0
- data/spec/xhtml1-testcases/0009.nt +1 -0
- data/spec/xhtml1-testcases/0009.sparql +3 -0
- data/spec/xhtml1-testcases/0009.xhtml +14 -0
- data/spec/xhtml1-testcases/0010.nt +2 -0
- data/spec/xhtml1-testcases/0010.sparql +4 -0
- data/spec/xhtml1-testcases/0010.xhtml +13 -0
- data/spec/xhtml1-testcases/0011.nt +3 -0
- data/spec/xhtml1-testcases/0011.sparql +17 -0
- data/spec/xhtml1-testcases/0011.xhtml +14 -0
- data/spec/xhtml1-testcases/0012.nt +1 -0
- data/spec/xhtml1-testcases/0012.sparql +3 -0
- data/spec/xhtml1-testcases/0012.xhtml +12 -0
- data/spec/xhtml1-testcases/0013.nt +1 -0
- data/spec/xhtml1-testcases/0013.sparql +3 -0
- data/spec/xhtml1-testcases/0013.xhtml +12 -0
- data/spec/xhtml1-testcases/0014.nt +1 -0
- data/spec/xhtml1-testcases/0014.sparql +3 -0
- data/spec/xhtml1-testcases/0014.xhtml +15 -0
- data/spec/xhtml1-testcases/0015.nt +2 -0
- data/spec/xhtml1-testcases/0015.sparql +4 -0
- data/spec/xhtml1-testcases/0015.xhtml +13 -0
- data/spec/xhtml1-testcases/0017.nt +3 -0
- data/spec/xhtml1-testcases/0017.sparql +6 -0
- data/spec/xhtml1-testcases/0017.xhtml +16 -0
- data/spec/xhtml1-testcases/0018.nt +1 -0
- data/spec/xhtml1-testcases/0018.sparql +3 -0
- data/spec/xhtml1-testcases/0018.xhtml +17 -0
- data/spec/xhtml1-testcases/0019.nt +1 -0
- data/spec/xhtml1-testcases/0019.sparql +3 -0
- data/spec/xhtml1-testcases/0019.xhtml +14 -0
- data/spec/xhtml1-testcases/0020.nt +1 -0
- data/spec/xhtml1-testcases/0020.sparql +3 -0
- data/spec/xhtml1-testcases/0020.xhtml +17 -0
- data/spec/xhtml1-testcases/0021.nt +1 -0
- data/spec/xhtml1-testcases/0021.sparql +3 -0
- data/spec/xhtml1-testcases/0021.xhtml +17 -0
- data/spec/xhtml1-testcases/0023.nt +1 -0
- data/spec/xhtml1-testcases/0023.sparql +3 -0
- data/spec/xhtml1-testcases/0023.xhtml +16 -0
- data/spec/xhtml1-testcases/0025.nt +2 -0
- data/spec/xhtml1-testcases/0025.sparql +4 -0
- data/spec/xhtml1-testcases/0025.xhtml +19 -0
- data/spec/xhtml1-testcases/0026.nt +1 -0
- data/spec/xhtml1-testcases/0026.sparql +3 -0
- data/spec/xhtml1-testcases/0026.xhtml +16 -0
- data/spec/xhtml1-testcases/0027.nt +1 -0
- data/spec/xhtml1-testcases/0027.sparql +3 -0
- data/spec/xhtml1-testcases/0027.xhtml +17 -0
- data/spec/xhtml1-testcases/0029.nt +1 -0
- data/spec/xhtml1-testcases/0029.sparql +3 -0
- data/spec/xhtml1-testcases/0029.xhtml +17 -0
- data/spec/xhtml1-testcases/0030.nt +1 -0
- data/spec/xhtml1-testcases/0030.sparql +3 -0
- data/spec/xhtml1-testcases/0030.xhtml +16 -0
- data/spec/xhtml1-testcases/0031.nt +1 -0
- data/spec/xhtml1-testcases/0031.sparql +3 -0
- data/spec/xhtml1-testcases/0031.xhtml +14 -0
- data/spec/xhtml1-testcases/0032.nt +1 -0
- data/spec/xhtml1-testcases/0032.sparql +3 -0
- data/spec/xhtml1-testcases/0032.xhtml +15 -0
- data/spec/xhtml1-testcases/0033.nt +2 -0
- data/spec/xhtml1-testcases/0033.sparql +5 -0
- data/spec/xhtml1-testcases/0033.xhtml +19 -0
- data/spec/xhtml1-testcases/0034.nt +1 -0
- data/spec/xhtml1-testcases/0034.sparql +3 -0
- data/spec/xhtml1-testcases/0034.xhtml +14 -0
- data/spec/xhtml1-testcases/0035.nt +1 -0
- data/spec/xhtml1-testcases/0035.sparql +3 -0
- data/spec/xhtml1-testcases/0035.xhtml +17 -0
- data/spec/xhtml1-testcases/0036.nt +1 -0
- data/spec/xhtml1-testcases/0036.sparql +3 -0
- data/spec/xhtml1-testcases/0036.xhtml +17 -0
- data/spec/xhtml1-testcases/0037.nt +1 -0
- data/spec/xhtml1-testcases/0037.sparql +3 -0
- data/spec/xhtml1-testcases/0037.xhtml +18 -0
- data/spec/xhtml1-testcases/0038.nt +1 -0
- data/spec/xhtml1-testcases/0038.sparql +3 -0
- data/spec/xhtml1-testcases/0038.xhtml +14 -0
- data/spec/xhtml1-testcases/0039.nt +1 -0
- data/spec/xhtml1-testcases/0039.sparql +3 -0
- data/spec/xhtml1-testcases/0039.xhtml +17 -0
- data/spec/xhtml1-testcases/0040.nt +1 -0
- data/spec/xhtml1-testcases/0040.sparql +3 -0
- data/spec/xhtml1-testcases/0040.xhtml +16 -0
- data/spec/xhtml1-testcases/0041.nt +1 -0
- data/spec/xhtml1-testcases/0041.sparql +3 -0
- data/spec/xhtml1-testcases/0041.xhtml +18 -0
- data/spec/xhtml1-testcases/0042.nt +0 -0
- data/spec/xhtml1-testcases/0042.sparql +4 -0
- data/spec/xhtml1-testcases/0042.xhtml +15 -0
- data/spec/xhtml1-testcases/0046.nt +3 -0
- data/spec/xhtml1-testcases/0046.sparql +6 -0
- data/spec/xhtml1-testcases/0046.xhtml +13 -0
- data/spec/xhtml1-testcases/0047.nt +3 -0
- data/spec/xhtml1-testcases/0047.sparql +6 -0
- data/spec/xhtml1-testcases/0047.xhtml +13 -0
- data/spec/xhtml1-testcases/0048.nt +3 -0
- data/spec/xhtml1-testcases/0048.sparql +6 -0
- data/spec/xhtml1-testcases/0048.xhtml +14 -0
- data/spec/xhtml1-testcases/0049.nt +2 -0
- data/spec/xhtml1-testcases/0049.sparql +4 -0
- data/spec/xhtml1-testcases/0049.xhtml +14 -0
- data/spec/xhtml1-testcases/0050.nt +2 -0
- data/spec/xhtml1-testcases/0050.sparql +5 -0
- data/spec/xhtml1-testcases/0050.xhtml +14 -0
- data/spec/xhtml1-testcases/0051.nt +2 -0
- data/spec/xhtml1-testcases/0051.sparql +4 -0
- data/spec/xhtml1-testcases/0051.xhtml +12 -0
- data/spec/xhtml1-testcases/0052.nt +1 -0
- data/spec/xhtml1-testcases/0052.sparql +3 -0
- data/spec/xhtml1-testcases/0052.xhtml +13 -0
- data/spec/xhtml1-testcases/0053.nt +2 -0
- data/spec/xhtml1-testcases/0053.sparql +4 -0
- data/spec/xhtml1-testcases/0053.xhtml +13 -0
- data/spec/xhtml1-testcases/0054.nt +2 -0
- data/spec/xhtml1-testcases/0054.sparql +4 -0
- data/spec/xhtml1-testcases/0054.xhtml +14 -0
- data/spec/xhtml1-testcases/0055.nt +2 -0
- data/spec/xhtml1-testcases/0055.sparql +4 -0
- data/spec/xhtml1-testcases/0055.xhtml +16 -0
- data/spec/xhtml1-testcases/0056.nt +3 -0
- data/spec/xhtml1-testcases/0056.sparql +5 -0
- data/spec/xhtml1-testcases/0056.xhtml +13 -0
- data/spec/xhtml1-testcases/0057.nt +4 -0
- data/spec/xhtml1-testcases/0057.sparql +6 -0
- data/spec/xhtml1-testcases/0057.xhtml +14 -0
- data/spec/xhtml1-testcases/0058.nt +6 -0
- data/spec/xhtml1-testcases/0058.sparql +9 -0
- data/spec/xhtml1-testcases/0058.xhtml +14 -0
- data/spec/xhtml1-testcases/0059.nt +6 -0
- data/spec/xhtml1-testcases/0059.sparql +8 -0
- data/spec/xhtml1-testcases/0059.xhtml +16 -0
- data/spec/xhtml1-testcases/0060.nt +2 -0
- data/spec/xhtml1-testcases/0060.sparql +4 -0
- data/spec/xhtml1-testcases/0060.xhtml +14 -0
- data/spec/xhtml1-testcases/0061.nt +1 -0
- data/spec/xhtml1-testcases/0061.sparql +3 -0
- data/spec/xhtml1-testcases/0061.xhtml +11 -0
- data/spec/xhtml1-testcases/0062.nt +1 -0
- data/spec/xhtml1-testcases/0062.sparql +3 -0
- data/spec/xhtml1-testcases/0062.xhtml +12 -0
- data/spec/xhtml1-testcases/0063.nt +1 -0
- data/spec/xhtml1-testcases/0063.sparql +3 -0
- data/spec/xhtml1-testcases/0063.xhtml +11 -0
- data/spec/xhtml1-testcases/0064.nt +1 -0
- data/spec/xhtml1-testcases/0064.sparql +4 -0
- data/spec/xhtml1-testcases/0064.xhtml +13 -0
- data/spec/xhtml1-testcases/0065.nt +3 -0
- data/spec/xhtml1-testcases/0065.sparql +6 -0
- data/spec/xhtml1-testcases/0065.xhtml +22 -0
- data/spec/xhtml1-testcases/0066.nt +1 -0
- data/spec/xhtml1-testcases/0066.sparql +3 -0
- data/spec/xhtml1-testcases/0066.xhtml +11 -0
- data/spec/xhtml1-testcases/0067.nt +1 -0
- data/spec/xhtml1-testcases/0067.sparql +3 -0
- data/spec/xhtml1-testcases/0067.xhtml +11 -0
- data/spec/xhtml1-testcases/0068.nt +1 -0
- data/spec/xhtml1-testcases/0068.sparql +3 -0
- data/spec/xhtml1-testcases/0068.xhtml +14 -0
- data/spec/xhtml1-testcases/0069.nt +1 -0
- data/spec/xhtml1-testcases/0069.sparql +3 -0
- data/spec/xhtml1-testcases/0069.xhtml +14 -0
- data/spec/xhtml1-testcases/0070.nt +1 -0
- data/spec/xhtml1-testcases/0070.sparql +3 -0
- data/spec/xhtml1-testcases/0070.xhtml +13 -0
- data/spec/xhtml1-testcases/0071.nt +1 -0
- data/spec/xhtml1-testcases/0071.sparql +3 -0
- data/spec/xhtml1-testcases/0071.xhtml +16 -0
- data/spec/xhtml1-testcases/0072.nt +1 -0
- data/spec/xhtml1-testcases/0072.sparql +3 -0
- data/spec/xhtml1-testcases/0072.xhtml +16 -0
- data/spec/xhtml1-testcases/0073.nt +1 -0
- data/spec/xhtml1-testcases/0073.sparql +3 -0
- data/spec/xhtml1-testcases/0073.xhtml +16 -0
- data/spec/xhtml1-testcases/0074.nt +1 -0
- data/spec/xhtml1-testcases/0074.sparql +3 -0
- data/spec/xhtml1-testcases/0074.xhtml +16 -0
- data/spec/xhtml1-testcases/0075.nt +1 -0
- data/spec/xhtml1-testcases/0075.sparql +3 -0
- data/spec/xhtml1-testcases/0075.xhtml +16 -0
- data/spec/xhtml1-testcases/0076.nt +23 -0
- data/spec/xhtml1-testcases/0076.sparql +70 -0
- data/spec/xhtml1-testcases/0076.xhtml +35 -0
- data/spec/xhtml1-testcases/0077.nt +23 -0
- data/spec/xhtml1-testcases/0077.sparql +70 -0
- data/spec/xhtml1-testcases/0077.xhtml +58 -0
- data/spec/xhtml1-testcases/0078.nt +6 -0
- data/spec/xhtml1-testcases/0078.sparql +7 -0
- data/spec/xhtml1-testcases/0078.xhtml +15 -0
- data/spec/xhtml1-testcases/0079.nt +3 -0
- data/spec/xhtml1-testcases/0079.sparql +6 -0
- data/spec/xhtml1-testcases/0079.xhtml +15 -0
- data/spec/xhtml1-testcases/0080.nt +1 -0
- data/spec/xhtml1-testcases/0080.sparql +3 -0
- data/spec/xhtml1-testcases/0080.xhtml +13 -0
- data/spec/xhtml1-testcases/0081.nt +6 -0
- data/spec/xhtml1-testcases/0081.sparql +9 -0
- data/spec/xhtml1-testcases/0081.xhtml +15 -0
- data/spec/xhtml1-testcases/0082.nt +8 -0
- data/spec/xhtml1-testcases/0082.sparql +11 -0
- data/spec/xhtml1-testcases/0082.xhtml +15 -0
- data/spec/xhtml1-testcases/0083.nt +6 -0
- data/spec/xhtml1-testcases/0083.sparql +9 -0
- data/spec/xhtml1-testcases/0083.xhtml +15 -0
- data/spec/xhtml1-testcases/0084.nt +8 -0
- data/spec/xhtml1-testcases/0084.sparql +11 -0
- data/spec/xhtml1-testcases/0084.xhtml +18 -0
- data/spec/xhtml1-testcases/0085.nt +4 -0
- data/spec/xhtml1-testcases/0085.sparql +6 -0
- data/spec/xhtml1-testcases/0085.xhtml +17 -0
- data/spec/xhtml1-testcases/0086.nt +0 -0
- data/spec/xhtml1-testcases/0086.sparql +4 -0
- data/spec/xhtml1-testcases/0086.xhtml +13 -0
- data/spec/xhtml1-testcases/0087.nt +23 -0
- data/spec/xhtml1-testcases/0087.sparql +70 -0
- data/spec/xhtml1-testcases/0087.xhtml +35 -0
- data/spec/xhtml1-testcases/0088.nt +3 -0
- data/spec/xhtml1-testcases/0088.sparql +6 -0
- data/spec/xhtml1-testcases/0088.xhtml +14 -0
- data/spec/xhtml1-testcases/0089.nt +1 -0
- data/spec/xhtml1-testcases/0089.sparql +3 -0
- data/spec/xhtml1-testcases/0089.xhtml +13 -0
- data/spec/xhtml1-testcases/0090.nt +1 -0
- data/spec/xhtml1-testcases/0090.sparql +3 -0
- data/spec/xhtml1-testcases/0090.xhtml +16 -0
- data/spec/xhtml1-testcases/0091.nt +3 -0
- data/spec/xhtml1-testcases/0091.sparql +6 -0
- data/spec/xhtml1-testcases/0091.xhtml +16 -0
- data/spec/xhtml1-testcases/0092.nt +3 -0
- data/spec/xhtml1-testcases/0092.sparql +16 -0
- data/spec/xhtml1-testcases/0092.xhtml +15 -0
- data/spec/xhtml1-testcases/0093.nt +2 -0
- data/spec/xhtml1-testcases/0093.sparql +4 -0
- data/spec/xhtml1-testcases/0093.xhtml +15 -0
- data/spec/xhtml1-testcases/0094.nt +3 -0
- data/spec/xhtml1-testcases/0094.sparql +16 -0
- data/spec/xhtml1-testcases/0094.xhtml +15 -0
- data/spec/xhtml1-testcases/0099.nt +1 -0
- data/spec/xhtml1-testcases/0099.sparql +3 -0
- data/spec/xhtml1-testcases/0099.xhtml +20 -0
- data/spec/xhtml1-testcases/0100.nt +3 -0
- data/spec/xhtml1-testcases/0100.sparql +15 -0
- data/spec/xhtml1-testcases/0100.xhtml +16 -0
- data/spec/xhtml1-testcases/0101.nt +3 -0
- data/spec/xhtml1-testcases/0101.sparql +15 -0
- data/spec/xhtml1-testcases/0101.xhtml +16 -0
- data/spec/xhtml1-testcases/0102.nt +1 -0
- data/spec/xhtml1-testcases/0102.sparql +15 -0
- data/spec/xhtml1-testcases/0102.xhtml +16 -0
- data/spec/xhtml1-testcases/0103.nt +1 -0
- data/spec/xhtml1-testcases/0103.sparql +15 -0
- data/spec/xhtml1-testcases/0103.xhtml +15 -0
- data/spec/xhtml1-testcases/0104.nt +3 -0
- data/spec/xhtml1-testcases/0104.sparql +5 -0
- data/spec/xhtml1-testcases/0104.xhtml +18 -0
- data/spec/xhtml1-testcases/0105.nt +1 -0
- data/spec/xhtml1-testcases/0105.sparql +7 -0
- data/spec/xhtml1-testcases/0105.xhtml +13 -0
- data/spec/xhtml1-testcases/0106.nt +1 -0
- data/spec/xhtml1-testcases/0106.sparql +7 -0
- data/spec/xhtml1-testcases/0106.xhtml +13 -0
- data/spec/xhtml1-testcases/0107.nt +0 -0
- data/spec/xhtml1-testcases/0107.sparql +4 -0
- data/spec/xhtml1-testcases/0107.xhtml +11 -0
- data/spec/xhtml1-testcases/0108.nt +1 -0
- data/spec/xhtml1-testcases/0108.sparql +3 -0
- data/spec/xhtml1-testcases/0108.xhtml +14 -0
- data/spec/xhtml1-testcases/0109.nt +1 -0
- data/spec/xhtml1-testcases/0109.sparql +3 -0
- data/spec/xhtml1-testcases/0109.xhtml +15 -0
- data/spec/xhtml1-testcases/0110.nt +1 -0
- data/spec/xhtml1-testcases/0110.sparql +4 -0
- data/spec/xhtml1-testcases/0110.xhtml +12 -0
- data/spec/xhtml1-testcases/0111.nt +2 -0
- data/spec/xhtml1-testcases/0111.sparql +5 -0
- data/spec/xhtml1-testcases/0111.xhtml +14 -0
- data/spec/xhtml1-testcases/0112.nt +1 -0
- data/spec/xhtml1-testcases/0112.sparql +3 -0
- data/spec/xhtml1-testcases/0112.xhtml +16 -0
- data/spec/xhtml1-testcases/0113.nt +2 -0
- data/spec/xhtml1-testcases/0113.sparql +4 -0
- data/spec/xhtml1-testcases/0113.xhtml +12 -0
- data/spec/xhtml1-testcases/0114.nt +3 -0
- data/spec/xhtml1-testcases/0114.sparql +5 -0
- data/spec/xhtml1-testcases/0114.xhtml +15 -0
- data/spec/xhtml1-testcases/0115.nt +4 -0
- data/spec/xhtml1-testcases/0115.sparql +14 -0
- data/spec/xhtml1-testcases/0115.xhtml +17 -0
- data/spec/xhtml1-testcases/0116.nt +2 -0
- data/spec/xhtml1-testcases/0116.sparql +6 -0
- data/spec/xhtml1-testcases/0116.xhtml +10 -0
- data/spec/xhtml1-testcases/0117.nt +2 -0
- data/spec/xhtml1-testcases/0117.sparql +4 -0
- data/spec/xhtml1-testcases/0117.xhtml +15 -0
- data/spec/xhtml1-testcases/0118.nt +1 -0
- data/spec/xhtml1-testcases/0118.sparql +5 -0
- data/spec/xhtml1-testcases/0118.xhtml +16 -0
- data/spec/xhtml1-testcases/0119.nt +1 -0
- data/spec/xhtml1-testcases/0119.sparql +5 -0
- data/spec/xhtml1-testcases/0119.xhtml +19 -0
- data/spec/xhtml1-testcases/0120.nt +1 -0
- data/spec/xhtml1-testcases/0120.sparql +5 -0
- data/spec/xhtml1-testcases/0120.xhtml +17 -0
- data/spec/xhtml1-testcases/0121.nt +2 -0
- data/spec/xhtml1-testcases/0121.sparql +4 -0
- data/spec/xhtml1-testcases/0121.xhtml +24 -0
- data/spec/xhtml1-testcases/0122.nt +1 -0
- data/spec/xhtml1-testcases/0122.sparql +4 -0
- data/spec/xhtml1-testcases/0122.xhtml +16 -0
- data/spec/xhtml1-testcases/0123.nt +3 -0
- data/spec/xhtml1-testcases/0123.sparql +5 -0
- data/spec/xhtml1-testcases/0123.xhtml +18 -0
- data/spec/xhtml1-testcases/0124.nt +4 -0
- data/spec/xhtml1-testcases/0124.sparql +6 -0
- data/spec/xhtml1-testcases/0124.xhtml +14 -0
- data/spec/xhtml1-testcases/0125.nt +1 -0
- data/spec/xhtml1-testcases/0125.sparql +5 -0
- data/spec/xhtml1-testcases/0125.xhtml +16 -0
- data/spec/xhtml1-testcases/0126.nt +3 -0
- data/spec/xhtml1-testcases/0126.sparql +5 -0
- data/spec/xhtml1-testcases/0126.xhtml +15 -0
- data/spec/xhtml1-testcases/1001.nt +6 -0
- data/spec/xhtml1-testcases/1001.sparql +8 -0
- data/spec/xhtml1-testcases/1001.xhtml +20 -0
- data/spec/xhtml1-testcases/9999.nt +3 -0
- data/spec/xhtml1-testcases/9999.xhtml +14 -0
- data/spec/xhtml1-testcases/rdfa-xhtml1-test-manifest.rdf +1303 -0
- data/tasks/rspec.rake +21 -0
- metadata +485 -0
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
require 'iconv'
|
|
2
|
+
|
|
3
|
+
module RdfaParser
|
|
4
|
+
# An RDF Literal, with value, encoding and language elements.
|
|
5
|
+
class Literal
|
|
6
|
+
class Encoding
|
|
7
|
+
attr_reader :value
|
|
8
|
+
|
|
9
|
+
def self.integer
|
|
10
|
+
@integer ||= coerce "http://www.w3.org/2001/XMLSchema#int"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.float
|
|
14
|
+
@float ||= coerce "http://www.w3.org/2001/XMLSchema#float"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.string
|
|
18
|
+
@string ||= coerce "http://www.w3.org/2001/XMLSchema#string"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.coerce(string_or_nil)
|
|
22
|
+
if string_or_nil.nil? || string_or_nil == ''
|
|
23
|
+
the_null_encoding
|
|
24
|
+
elsif xmlliteral == string_or_nil.to_s
|
|
25
|
+
xmlliteral
|
|
26
|
+
else
|
|
27
|
+
new string_or_nil
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def inspect
|
|
32
|
+
to_s()
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def self.the_null_encoding
|
|
36
|
+
@the_null_encoding ||= Null.new(nil)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def self.xmlliteral
|
|
40
|
+
@xmlliteral ||= XMLLiteral.new("http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral")
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def initialize(value)
|
|
44
|
+
@value = URIRef.new(value.to_s) if value
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def should_quote?
|
|
48
|
+
#@value != self.class.integer.to_s
|
|
49
|
+
true # All non-XML literals are quoted per W3C RDF Test Cases
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def ==(other)
|
|
53
|
+
case other
|
|
54
|
+
when String
|
|
55
|
+
other == @value.to_s
|
|
56
|
+
when self.class
|
|
57
|
+
other.value.to_s == @value.to_s
|
|
58
|
+
else
|
|
59
|
+
false
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def hash
|
|
64
|
+
@value.hash
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def to_s
|
|
68
|
+
@value.to_s
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Serialize literal, adding datatype and language elements, if present.
|
|
72
|
+
# XMLLiteral and String values are encoding using C-style strings with
|
|
73
|
+
# non-printable ASCII characters escaped.
|
|
74
|
+
def format_as_n3(content, lang)
|
|
75
|
+
content = c_style(content.to_s)
|
|
76
|
+
quoted_content = should_quote? ? "\"#{content}\"" : content
|
|
77
|
+
"#{quoted_content}^^<#{value}>#{lang ? "@#{lang}" : ""}"
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def format_as_trix(content, lang)
|
|
81
|
+
lang = " xml:lang=\"#{lang}\"" if lang
|
|
82
|
+
"<typedLiteral datatype=\"#{@value}\"#{lang}>#{content}</typedLiteral>"
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def xml_args(content, lang)
|
|
86
|
+
hash = {"rdf:datatype" => @value.to_s}
|
|
87
|
+
hash["xml:lang"] = lang if lang
|
|
88
|
+
[content.to_s, hash]
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def compare_contents(a, b, same_lang)
|
|
92
|
+
a == b && same_lang
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def encode_contents(contents, options)
|
|
96
|
+
contents
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def xmlliteral?
|
|
100
|
+
false
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
#private
|
|
104
|
+
# "Borrowed" from JSON utf8_to_json
|
|
105
|
+
MAP = {
|
|
106
|
+
"\x0" => '\u0000',
|
|
107
|
+
"\x1" => '\u0001',
|
|
108
|
+
"\x2" => '\u0002',
|
|
109
|
+
"\x3" => '\u0003',
|
|
110
|
+
"\x4" => '\u0004',
|
|
111
|
+
"\x5" => '\u0005',
|
|
112
|
+
"\x6" => '\u0006',
|
|
113
|
+
"\x7" => '\u0007',
|
|
114
|
+
"\b" => '\b',
|
|
115
|
+
"\t" => '\t',
|
|
116
|
+
"\n" => '\n',
|
|
117
|
+
"\xb" => '\u000B',
|
|
118
|
+
"\f" => '\f',
|
|
119
|
+
"\r" => '\r',
|
|
120
|
+
"\xe" => '\u000E',
|
|
121
|
+
"\xf" => '\u000F',
|
|
122
|
+
"\x10" => '\u0010',
|
|
123
|
+
"\x11" => '\u0011',
|
|
124
|
+
"\x12" => '\u0012',
|
|
125
|
+
"\x13" => '\u0013',
|
|
126
|
+
"\x14" => '\u0014',
|
|
127
|
+
"\x15" => '\u0015',
|
|
128
|
+
"\x16" => '\u0016',
|
|
129
|
+
"\x17" => '\u0017',
|
|
130
|
+
"\x18" => '\u0018',
|
|
131
|
+
"\x19" => '\u0019',
|
|
132
|
+
"\x1a" => '\u001A',
|
|
133
|
+
"\x1b" => '\u001B',
|
|
134
|
+
"\x1c" => '\u001C',
|
|
135
|
+
"\x1d" => '\u001D',
|
|
136
|
+
"\x1e" => '\u001E',
|
|
137
|
+
"\x1f" => '\u001F',
|
|
138
|
+
'"' => '\"',
|
|
139
|
+
'\\' => '\\\\',
|
|
140
|
+
'/' => '/',
|
|
141
|
+
} # :nodoc:
|
|
142
|
+
|
|
143
|
+
# Convert a UTF8 encoded Ruby string _string_ to a C-style string, encoded with
|
|
144
|
+
# UTF16 big endian characters as \U????, and return it.
|
|
145
|
+
if String.method_defined?(:force_encoding)
|
|
146
|
+
def c_style(string) # :nodoc:
|
|
147
|
+
string << '' # XXX workaround: avoid buffer sharing
|
|
148
|
+
string.force_encoding(Encoding::ASCII_8BIT)
|
|
149
|
+
string.gsub!(/["\\\/\x0-\x1f]/) { MAP[$&] }
|
|
150
|
+
string.gsub!(/(
|
|
151
|
+
(?:
|
|
152
|
+
[\xc2-\xdf][\x80-\xbf] |
|
|
153
|
+
[\xe0-\xef][\x80-\xbf]{2} |
|
|
154
|
+
[\xf0-\xf4][\x80-\xbf]{3}
|
|
155
|
+
)+ |
|
|
156
|
+
[\x80-\xc1\xf5-\xff] # invalid
|
|
157
|
+
)/nx) { |c|
|
|
158
|
+
c.size == 1 and raise TypeError, "invalid utf8 byte: '#{c}'"
|
|
159
|
+
s = Iconv.new('utf-16be', 'utf-8').iconv(c).unpack('H*')[0].upcase
|
|
160
|
+
s.gsub!(/.{4}/n, '\\\\u\&')
|
|
161
|
+
}
|
|
162
|
+
string.force_encoding(Encoding::UTF_8)
|
|
163
|
+
string
|
|
164
|
+
end
|
|
165
|
+
else
|
|
166
|
+
def c_style(string) # :nodoc:
|
|
167
|
+
string = string.gsub(/["\\\/\x0-\x1f]/) { MAP[$&] }
|
|
168
|
+
string.gsub!(/(
|
|
169
|
+
(?:
|
|
170
|
+
[\xc2-\xdf][\x80-\xbf] |
|
|
171
|
+
[\xe0-\xef][\x80-\xbf]{2} |
|
|
172
|
+
[\xf0-\xf4][\x80-\xbf]{3}
|
|
173
|
+
)+ |
|
|
174
|
+
[\x80-\xc1\xf5-\xff] # invalid
|
|
175
|
+
)/nx) { |c|
|
|
176
|
+
c.size == 1 and raise TypeError, "invalid utf8 byte: '#{c}'"
|
|
177
|
+
s = Iconv.new('utf-16be', 'utf-8').iconv(c).unpack('H*')[0].upcase
|
|
178
|
+
s.gsub!(/.{4}/n, '\\\\u\&')
|
|
179
|
+
}
|
|
180
|
+
string
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
class Null < Encoding
|
|
186
|
+
def to_s
|
|
187
|
+
''
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def format_as_n3(content, lang)
|
|
191
|
+
"\"#{c_style(content)}\"" + (lang ? "@#{lang}" : "")
|
|
192
|
+
# Perform translation on value if it's typed
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
def format_as_trix(content, lang)
|
|
196
|
+
if lang
|
|
197
|
+
"<plainLiteral xml:lang=\"#{lang}\"\>#{content}</plainLiteral>"
|
|
198
|
+
else
|
|
199
|
+
"<plainLiteral>#{content}</plainLiteral>"
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
def xml_args(content, lang)
|
|
204
|
+
hash = {}
|
|
205
|
+
hash["xml:lang"] = lang if lang
|
|
206
|
+
[content, hash]
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def inspect
|
|
210
|
+
"<theReddy::TypeLiteral::Encoding::Null>"
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
def xmlliteral?
|
|
214
|
+
false
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
class XMLLiteral < Encoding
|
|
219
|
+
# Compare XMLLiterals
|
|
220
|
+
# FIXME: Nokogiri doesn't do a deep compare of elements
|
|
221
|
+
def compare_contents(a, b, same_lang)
|
|
222
|
+
begin
|
|
223
|
+
a_hash = ActiveSupport::XmlMini.parse("<foo>#{a}</foo>")
|
|
224
|
+
b_hash = ActiveSupport::XmlMini.parse("<foo>#{b}</foo>")
|
|
225
|
+
a_hash == b_hash
|
|
226
|
+
rescue
|
|
227
|
+
super
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
def format_as_n3(content, lang)
|
|
232
|
+
"\"#{c_style(content)}\"^^<#{value}>"
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
def format_as_trix(content, lang)
|
|
236
|
+
"<typedLiteral datatype=\"#{@value}\">#{content}</typedLiteral>"
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
def xml_args(content, lang)
|
|
240
|
+
hash = {"rdf:parseType" => "Literal"}
|
|
241
|
+
[content, hash]
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
# Map namespaces from context to each top-level element found within snippet
|
|
245
|
+
def encode_contents(contents, options)
|
|
246
|
+
ns_hash = options[:namespaces].values.inject({}) {|h, ns| h.merge(ns.xmlns_hash)}
|
|
247
|
+
ns_strs = []
|
|
248
|
+
ns_hash.each_pair {|a, u| ns_strs << "#{a}=\"#{u}\""}
|
|
249
|
+
|
|
250
|
+
# Add inherited namespaces to created root element so that they're inherited to sub-elements
|
|
251
|
+
contents = Nokogiri::XML::Document.parse("<foo #{ns_strs.join(" ")}>#{contents}</foo>").root
|
|
252
|
+
|
|
253
|
+
@contents = contents.children.map do |c|
|
|
254
|
+
if c.is_a?(Nokogiri::XML::Element)
|
|
255
|
+
ns_hash.each_pair { |a, u| c[a] = u unless c.namespaces[a]}
|
|
256
|
+
if options[:language] && c["lang"].to_s.empty?
|
|
257
|
+
c["xml:lang"] = options[:language]
|
|
258
|
+
end
|
|
259
|
+
end
|
|
260
|
+
c.to_html
|
|
261
|
+
end.join("")
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
def xmlliteral?
|
|
265
|
+
true
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
class Language
|
|
270
|
+
attr_accessor :value
|
|
271
|
+
def initialize(string)
|
|
272
|
+
@value = string.to_s.downcase
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
def clean(string)
|
|
276
|
+
case string
|
|
277
|
+
when "eng"; "en"
|
|
278
|
+
else string
|
|
279
|
+
end
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
def == (other)
|
|
283
|
+
case other
|
|
284
|
+
when String
|
|
285
|
+
other == @value
|
|
286
|
+
when self.class
|
|
287
|
+
other.value == @value
|
|
288
|
+
end
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
def to_s; @value; end
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
attr_accessor :contents, :encoding, :lang
|
|
295
|
+
|
|
296
|
+
# Create a new Literal. Optinally pass a namespaces hash
|
|
297
|
+
# for use in applying to rdf::XMLLiteral values.
|
|
298
|
+
def initialize(contents, encoding, options = {})
|
|
299
|
+
unless encoding.is_a?(Encoding)
|
|
300
|
+
raise TypeError, "#{encoding.inspect} should be an instance of Encoding"
|
|
301
|
+
end
|
|
302
|
+
@encoding = encoding
|
|
303
|
+
lang = options[:language]
|
|
304
|
+
@lang = Language.new(lang) if lang
|
|
305
|
+
options = {:namespaces => {}}.merge(options)
|
|
306
|
+
|
|
307
|
+
@contents = @encoding.encode_contents(contents, options)
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
def self.untyped(contents, language = nil)
|
|
311
|
+
options = {}
|
|
312
|
+
options[:language] = language if language
|
|
313
|
+
new(contents, Encoding.the_null_encoding, options)
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
# Options include:
|
|
317
|
+
# _namespaces_:: A hash of namespace entries (for XMLLiteral)
|
|
318
|
+
# _language_:: Language encoding
|
|
319
|
+
def self.typed(contents, encoding, options = {})
|
|
320
|
+
encoding = Encoding.coerce(encoding)
|
|
321
|
+
new(contents, encoding, options)
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
def self.build_from(object)
|
|
325
|
+
new(object.to_s, infer_encoding_for(object))
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
def self.infer_encoding_for(object)
|
|
329
|
+
case object
|
|
330
|
+
when Integer then Encoding.new("http://www.w3.org/2001/XMLSchema#int")
|
|
331
|
+
when Float then Encoding.new("http://www.w3.org/2001/XMLSchema#float")
|
|
332
|
+
when Time then Encoding.new("http://www.w3.org/2001/XMLSchema#time")
|
|
333
|
+
when DateTime then Encoding.new("http://www.w3.org/2001/XMLSchema#dateTime")
|
|
334
|
+
when Date then Encoding.new("http://www.w3.org/2001/XMLSchema#date")
|
|
335
|
+
else Encoding.new("http://www.w3.org/2001/XMLSchema#string")
|
|
336
|
+
end
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
class << self
|
|
340
|
+
protected :new
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
def ==(other)
|
|
344
|
+
case other
|
|
345
|
+
when String then other == self.contents
|
|
346
|
+
when self.class
|
|
347
|
+
other.encoding == @encoding &&
|
|
348
|
+
@encoding.compare_contents(self.contents, other.contents, other.lang == @lang)
|
|
349
|
+
else false
|
|
350
|
+
end
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
def to_n3
|
|
354
|
+
encoding.format_as_n3(self.contents, @lang)
|
|
355
|
+
end
|
|
356
|
+
alias_method :to_ntriples, :to_n3
|
|
357
|
+
|
|
358
|
+
def to_trix
|
|
359
|
+
encoding.format_as_trix(@contents, @lang)
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
def xml_args
|
|
363
|
+
encoding.xml_args( @contents, @lang)
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
def xmlliteral?
|
|
367
|
+
encoding.xmlliteral?
|
|
368
|
+
end
|
|
369
|
+
|
|
370
|
+
# Output value
|
|
371
|
+
def to_s
|
|
372
|
+
self.contents.to_s
|
|
373
|
+
end
|
|
374
|
+
end
|
|
375
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
module RdfaParser
|
|
2
|
+
# From Reddy
|
|
3
|
+
class Namespace
|
|
4
|
+
attr_accessor :short, :uri, :fragment
|
|
5
|
+
|
|
6
|
+
##
|
|
7
|
+
# Creates a new namespace given a URI and the short name.
|
|
8
|
+
#
|
|
9
|
+
# ==== Example
|
|
10
|
+
# Namespace.new("http://xmlns.com/foaf/0.1/", "foaf") # => returns a new Foaf namespace
|
|
11
|
+
#
|
|
12
|
+
# @param [String] uri the URI of the namespace
|
|
13
|
+
# @param [String] short the short name of the namespace
|
|
14
|
+
# @param [Boolean] fragment are the identifiers on this resource fragment identifiers? (e.g. '#') Defaults to false.
|
|
15
|
+
#
|
|
16
|
+
# ==== Returns
|
|
17
|
+
# @return [Namespace] The newly created namespace.
|
|
18
|
+
#
|
|
19
|
+
# @raise [Error] Checks validity of the desired shortname and raises if it is incorrect.
|
|
20
|
+
# [gk] nil is a valid shortname to specify the default namespace
|
|
21
|
+
# @author Tom Morris, Pius Uzamere
|
|
22
|
+
|
|
23
|
+
def initialize(uri, short, fragment = nil)
|
|
24
|
+
@uri = URIRef.new(uri) unless uri.is_a?(URIRef)
|
|
25
|
+
@fragment = fragment
|
|
26
|
+
@fragment = uri.to_s.match(/\#$/) ? true : false if fragment.nil?
|
|
27
|
+
short = nil if short.to_s.empty?
|
|
28
|
+
if shortname_valid?(short)
|
|
29
|
+
@short = short
|
|
30
|
+
else
|
|
31
|
+
raise ParserException, "Invalid shortname '#{short}"
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
##
|
|
36
|
+
# Allows the construction of arbitrary URIs on the namespace.
|
|
37
|
+
#
|
|
38
|
+
# ==== Example
|
|
39
|
+
# foaf = Namespace.new("http://xmlns.com/foaf/0.1/", "foaf"); foaf.knows # => returns a new URIRef with URI "http://xmlns.com/foaf/0.1/knows"
|
|
40
|
+
# foaf = Namespace.new("http://xmlns.com/foaf/0.1/", "foaf", true); foaf.knows # => returns a new URIRef with URI "http://xmlns.com/foaf/0.1/#knows"
|
|
41
|
+
#
|
|
42
|
+
# @param [String] uri the URI of the namespace
|
|
43
|
+
# @param [String] short the short name of the namespace
|
|
44
|
+
# @param [Boolean] fragment are the identifiers on this resource fragment identifiers? (e.g. '#') Defaults to false.
|
|
45
|
+
#
|
|
46
|
+
# ==== Returns
|
|
47
|
+
# @return [URIRef] The newly created URIRegerence.
|
|
48
|
+
#
|
|
49
|
+
# @raise [Error] Checks validity of the desired shortname and raises if it is incorrect.
|
|
50
|
+
# @author Tom Morris, Pius Uzamere
|
|
51
|
+
|
|
52
|
+
def method_missing(methodname, *args)
|
|
53
|
+
self + methodname
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Construct a URIRef from a namespace as in method_missing, but without method collision issues
|
|
57
|
+
def +(suffix)
|
|
58
|
+
URIRef.new((fragment ? "##{suffix}" : suffix.to_s), @uri)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def bind(graph)
|
|
62
|
+
if graph.class == Graph
|
|
63
|
+
graph.bind(self)
|
|
64
|
+
else
|
|
65
|
+
raise GraphException, "Can't bind namespace to graph of type #{graph.class}"
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Output xmlns attribute name
|
|
70
|
+
def xmlns_attr
|
|
71
|
+
short.nil? ? "xmlns" : "xmlns:#{short}"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def xmlns_hash
|
|
75
|
+
{xmlns_attr => @uri.to_s}
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def inspect
|
|
79
|
+
"Namespace[abbr='#{short}',uri='#{uri}']"
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
private
|
|
83
|
+
def shortname_valid?(shortname)
|
|
84
|
+
if shortname =~ /[a-zA-Z_][a-zA-Z0-9_]+/ || shortname.nil?
|
|
85
|
+
return true
|
|
86
|
+
else
|
|
87
|
+
return false
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|