rdf_context 0.4.8 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +27 -0
- data/README.rdoc +22 -9
- data/Rakefile +11 -6
- data/VERSION +1 -1
- data/bin/rdf_context +12 -4
- data/lib/rdf_context.rb +3 -1
- data/lib/rdf_context/aggregate_graph.rb +86 -0
- data/lib/rdf_context/array_hacks.rb +53 -0
- data/lib/rdf_context/conjunctive_graph.rb +1 -1
- data/lib/rdf_context/exceptions.rb +9 -7
- data/lib/rdf_context/graph.rb +174 -15
- data/lib/rdf_context/literal.rb +34 -2
- data/lib/rdf_context/n3_grammar.treetop +213 -129
- data/lib/rdf_context/n3parser.rb +281 -57
- data/lib/rdf_context/namespace.rb +23 -12
- data/lib/rdf_context/parser.rb +4 -3
- data/lib/rdf_context/quoted_graph.rb +38 -0
- data/lib/rdf_context/rdfaparser.rb +2 -1
- data/lib/rdf_context/rdfxmlparser.rb +4 -3
- data/lib/rdf_context/store/abstract_sql_store.rb +4 -4
- data/lib/rdf_context/store/abstract_store.rb +5 -1
- data/lib/rdf_context/store/sqlite3_store.rb +10 -8
- data/lib/rdf_context/string_hacks.rb +44 -21
- data/lib/rdf_context/term_utils.rb +73 -4
- data/lib/rdf_context/triple.rb +32 -47
- data/lib/rdf_context/uriref.rb +33 -26
- data/spec/aggregate_graph_spec.rb +59 -0
- data/spec/conjunctive_graph_spec.rb +1 -1
- data/spec/cwm_spec.rb +32 -0
- data/spec/graph_spec.rb +114 -3
- data/spec/literal_spec.rb +107 -5
- data/spec/matchers.rb +104 -51
- data/spec/n3parser_spec.rb +798 -99
- data/spec/namespaces_spec.rb +26 -0
- data/spec/quoted_graph_spec.rb +0 -0
- data/spec/rdf_helper.rb +197 -0
- data/spec/rdfa_helper.rb +15 -11
- data/spec/rdfa_parser_spec.rb +6 -8
- data/spec/rdfxml_spec.rb +21 -28
- data/spec/spec_helper.rb +20 -0
- data/spec/sqlite3_store_spec.rb +6 -5
- data/spec/store_helper.rb +9 -1
- data/spec/string_hacks_spec.rb +14 -0
- data/spec/{rdfxml_helper.rb → swap_helper.rb} +8 -9
- data/spec/swap_spec.rb +77 -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/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 +90 -46
- 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_spec.rb +64 -0
- data/spec/uriref_spec.rb +74 -34
- data/test/n3_tests/rdflib/n3-writer-teset-26.n3 +31 -0
- data/test/n3_tests/rdflib/n3-writer-teset-26.nt +14 -0
- data/test/rdf_tests/xml-literal-mixed.nt +1 -2
- metadata +278 -39
- data/lib/rdf_context/n3_grammar.rb +0 -2171
- data/test/perf_test/test.rb +0 -11
- data/test/perf_test/tommorris.rdf +0 -2267
data/spec/sqlite3_store_spec.rb
CHANGED
@@ -3,8 +3,9 @@ require File.join(File.dirname(__FILE__), 'store_helper')
|
|
3
3
|
|
4
4
|
describe "SQLite3 Store" do
|
5
5
|
before(:all) do
|
6
|
-
|
7
|
-
|
6
|
+
FileUtils.rm_rf(TMP_DIR)
|
7
|
+
Dir.mkdir(TMP_DIR)
|
8
|
+
@dbfile = File.join(TMP_DIR, "sqlite3.db")
|
8
9
|
@identifier = URIRef.new("http://identifier")
|
9
10
|
end
|
10
11
|
|
@@ -13,11 +14,11 @@ describe "SQLite3 Store" do
|
|
13
14
|
end
|
14
15
|
|
15
16
|
after(:all) do
|
16
|
-
FileUtils.rm_rf(
|
17
|
+
FileUtils.rm_rf(TMP_DIR)
|
17
18
|
end
|
18
19
|
|
19
20
|
after(:each) do
|
20
|
-
FileUtils.rm(@dbfile) if File.
|
21
|
+
FileUtils.rm(@dbfile) if File.file?(@dbfile)
|
21
22
|
end
|
22
23
|
|
23
24
|
subject { @store }
|
@@ -51,7 +52,7 @@ describe "SQLite3 Store" do
|
|
51
52
|
subject.contexts(triple).length.should == 1
|
52
53
|
end
|
53
54
|
|
54
|
-
it "should find contexts
|
55
|
+
it "should find contexts pattern triple" do
|
55
56
|
triple = Triple.new("http://foo", RDF_TYPE, "http://baz")
|
56
57
|
subject.add(triple, nil)
|
57
58
|
subject.contexts(Triple.new(nil, nil, nil)).length.should == 1
|
data/spec/store_helper.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
shared_examples_for "Store" do
|
2
3
|
before(:all) do
|
3
4
|
@ex = Namespace.new("http://example.org/", "ex")
|
@@ -14,6 +15,13 @@ shared_examples_for "Store" do
|
|
14
15
|
subject.size.should == 2
|
15
16
|
end
|
16
17
|
|
18
|
+
it "should allow you to add triples with bnodes" do
|
19
|
+
subject.add(Triple.new(BNode.new, @ex.b, @ex.c), nil)
|
20
|
+
subject.add(Triple.new(@ex.a, BNode.new, @ex.c), nil)
|
21
|
+
subject.add(Triple.new(@ex.a, @ex.b, BNode.new), nil)
|
22
|
+
subject.size.should == 3
|
23
|
+
end
|
24
|
+
|
17
25
|
it "should allow you to create and bind Namespace objects" do
|
18
26
|
foaf = Namespace.new("http://xmlns.com/foaf/0.1/", "foaf")
|
19
27
|
subject.bind(foaf).should == foaf
|
@@ -57,7 +65,7 @@ shared_examples_for "Store" do
|
|
57
65
|
subject.contains?(Triple.new(@ex.john, @foaf.knows, @ex.jane), nil).should be_true
|
58
66
|
end
|
59
67
|
|
60
|
-
it "should contain different triple
|
68
|
+
it "should contain different triple patterns" do
|
61
69
|
[
|
62
70
|
Triple.new(URIRef.new("http://foo"),URIRef.new("http://bar"),URIRef.new("http://baz")),
|
63
71
|
Triple.new(URIRef.new("http://foo"),URIRef.new("http://bar"),Literal.untyped("baz")),
|
data/spec/string_hacks_spec.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
require File.join(File.dirname(__FILE__), 'spec_helper')
|
2
3
|
describe "String RDF encoding" do
|
3
4
|
{
|
@@ -18,4 +19,17 @@ describe "String RDF encoding" do
|
|
18
19
|
encoded.rdf_unescape.should == raw
|
19
20
|
end
|
20
21
|
end
|
22
|
+
|
23
|
+
# 16-bit string encodings
|
24
|
+
{
|
25
|
+
"16-bit:\u{15678}another" => '16-bit:\\U00015678another',
|
26
|
+
}.each_pair do |raw, encoded|
|
27
|
+
specify "'#{raw}' should escape to '#{encoded}'" do
|
28
|
+
raw.rdf_escape.should == encoded
|
29
|
+
end
|
30
|
+
|
31
|
+
specify "'#{encoded}' should unescape to '#{raw}'" do
|
32
|
+
encoded.rdf_unescape.should == raw
|
33
|
+
end
|
34
|
+
end if defined?(::Encoding)
|
21
35
|
end
|
@@ -1,14 +1,11 @@
|
|
1
1
|
require 'matchers'
|
2
2
|
|
3
|
-
module
|
3
|
+
module SWAPHelper
|
4
4
|
# Class representing test cases in format http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#
|
5
5
|
class TestCase
|
6
6
|
include Matchers
|
7
7
|
|
8
|
-
TEST_DIR = File.join(File.dirname(__FILE__), '
|
9
|
-
NT_DIR = File.join(File.dirname(__FILE__), 'rdfa-triples')
|
10
|
-
BASE_MANIFEST_URL = "http://rdfa.digitalbazaar.com/test-suite/"
|
11
|
-
BASE_TEST_CASE_URL = "#{BASE_MANIFEST_URL}test-cases/"
|
8
|
+
TEST_DIR = File.join(File.dirname(__FILE__), 'swap_test')
|
12
9
|
|
13
10
|
attr_accessor :about
|
14
11
|
attr_accessor :approval
|
@@ -40,7 +37,7 @@ module RdfXMLHelper
|
|
40
37
|
self.rdf_type = statement.object.short_name
|
41
38
|
elsif statement.predicate.short_name =~ /Document\Z/i
|
42
39
|
#puts "#{statement.predicate.short_name}: #{statement.object.inspect}"
|
43
|
-
self.send("#{statement.predicate.short_name}=", statement.object.to_s.sub(/^.*
|
40
|
+
self.send("#{statement.predicate.short_name}=", statement.object.to_s.sub(/^.*swap\/test/, TEST_DIR))
|
44
41
|
if statement.predicate.short_name == "inputDocument"
|
45
42
|
self.about ||= statement.object
|
46
43
|
self.name ||= statement.object.short_name
|
@@ -68,6 +65,8 @@ module RdfXMLHelper
|
|
68
65
|
"]"
|
69
66
|
end
|
70
67
|
|
68
|
+
def compare; :graph; end
|
69
|
+
|
71
70
|
# Read in file, and apply modifications reference either .html or .xhtml
|
72
71
|
def input
|
73
72
|
File.read(inputDocument)
|
@@ -100,10 +99,10 @@ module RdfXMLHelper
|
|
100
99
|
@@positive_entailment_tests = []
|
101
100
|
@@negative_entailment_tests = []
|
102
101
|
|
103
|
-
manifest = File.read(File.join(TEST_DIR, "
|
104
|
-
parser =
|
102
|
+
manifest = File.read(File.join(TEST_DIR, "n3parser.tests"))
|
103
|
+
parser = Parser.new
|
105
104
|
begin
|
106
|
-
parser.parse(manifest, "http://www.w3.org/2000/10/
|
105
|
+
parser.parse(manifest, "http://www.w3.org/2000/10/swap/test/n3parser.tests")
|
107
106
|
rescue
|
108
107
|
raise "Parse error: #{$!}\n\t#{parser.debug.join("\t\n")}\n\n"
|
109
108
|
end
|
data/spec/swap_spec.rb
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'spec_helper')
|
2
|
+
include RdfContext
|
3
|
+
|
4
|
+
describe "N3 parser" do
|
5
|
+
# W3C N3 Test suite from http://www.w3.org/2000/10/swap/test/n3parser.tests
|
6
|
+
describe "w3c swap tests" do
|
7
|
+
require 'rdf_helper'
|
8
|
+
|
9
|
+
def self.positive_tests
|
10
|
+
RdfHelper::TestCase.positive_parser_tests(SWAP_TEST, SWAP_DIR) rescue []
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.negative_tests
|
14
|
+
RdfHelper::TestCase.negative_parser_tests(SWAP_TEST, SWAP_DIR) rescue []
|
15
|
+
end
|
16
|
+
|
17
|
+
# Negative parser tests should raise errors.
|
18
|
+
describe "positive parser tests" do
|
19
|
+
positive_tests.each do |t|
|
20
|
+
#next unless t.about.uri.to_s =~ /rdfms-rdf-names-use/
|
21
|
+
#next unless t.name =~ /11/
|
22
|
+
#puts t.inspect
|
23
|
+
specify "#{t.name}: #{t.about.uri.to_s} against #{t.outputDocument}" do
|
24
|
+
begin
|
25
|
+
t.run_test do |rdf_string, parser|
|
26
|
+
t.name.should_not == "n3_10012" # Too many bnodes makes graph compare unfeasable
|
27
|
+
parser.parse(rdf_string, t.about.uri.to_s, :strict => true, :debug => [])
|
28
|
+
end
|
29
|
+
rescue #Spec::Expectations::ExpectationNotMetError => e
|
30
|
+
if %w(n3_10003 n3_10004).include?(t.name)
|
31
|
+
pending("@forAll/@forEach not yet implemented")
|
32
|
+
elsif %w(n3_10007 n3_10014 n3_10015 n3_10017).include?(t.name)
|
33
|
+
pending("formulae not yet implemented")
|
34
|
+
elsif %w(n3_10012).include?(t.name)
|
35
|
+
pending("check visually, graph compare times too long")
|
36
|
+
elsif %w(n3_10010).include?(t.name)
|
37
|
+
pending("Not supported in Ruby 1.8")
|
38
|
+
else
|
39
|
+
raise
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "negative parser tests" do
|
47
|
+
negative_tests.each do |t|
|
48
|
+
#next unless t.about.uri.to_s =~ /rdfms-empty-property-elements/
|
49
|
+
#next unless t.name =~ /1/
|
50
|
+
#puts t.inspect
|
51
|
+
specify "#{t.name}: #{t.about.uri.to_s}" do
|
52
|
+
t.run_test do |rdf_string, parser|
|
53
|
+
if !defined?(::Encoding) && %w(n3_10019 n3_10020).include?(t.name)
|
54
|
+
pending("Not supported in Ruby 1.8")
|
55
|
+
return
|
56
|
+
end
|
57
|
+
begin
|
58
|
+
lambda do
|
59
|
+
parser.parse(rdf_string, t.about.uri.to_s, :strict => true, :debug => [])
|
60
|
+
end.should raise_error(RdfException)
|
61
|
+
rescue Spec::Expectations::ExpectationNotMetError => e
|
62
|
+
if %w().include?(t.name)
|
63
|
+
pending("@forAll/@forEach not yet implemented")
|
64
|
+
elsif %w(n3_10019 n3_10020 n3_20005).include?(t.name.to_s)
|
65
|
+
pending("formulae not yet implemented")
|
66
|
+
elsif %w(n3_20000).include?(t.name)
|
67
|
+
pending("figure out how to tell that these are errors")
|
68
|
+
else
|
69
|
+
raise
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<!-- A simple RDF file for parser testing -->
|
2
|
+
<rdf:RDF
|
3
|
+
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
|
4
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
5
|
+
xmlns:daml="http://www.daml.org/2001/03/daml+oil#"
|
6
|
+
xmlns="http://www.daml.org/2000/12/daml+oil#">
|
7
|
+
<rdfs:Class rdf:ID="Animal">
|
8
|
+
<rdfs:label>Animal</rdfs:label>
|
9
|
+
<restrictedBy>
|
10
|
+
<Restriction>
|
11
|
+
<onProperty rdf:resource="#parent"/>
|
12
|
+
<cardinality>2</cardinality>
|
13
|
+
</Restriction>
|
14
|
+
</restrictedBy>
|
15
|
+
</rdfs:Class>
|
16
|
+
</rdf:RDF>
|
17
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# $Id: anon-prop.n3,v 1.1 2001-02-26 15:22:30 connolly Exp $
|
2
|
+
#
|
3
|
+
# I discovered a bug in cwm.py while writing
|
4
|
+
# http://www.w3.org/2001/02pd/gv.n3 (rev/date)
|
5
|
+
# at or before gv.n3,v 1.3 2001/02/22 06:17:55
|
6
|
+
#
|
7
|
+
# notation3.py reads it in and spits out just what I'd expect
|
8
|
+
# (by naming the anonymous node and using log:forSome)
|
9
|
+
# but running it thru cwm.py -think causes the property
|
10
|
+
# of the property to get lost altogether, and the anonymous
|
11
|
+
# property gets a name without an existential quantifier.
|
12
|
+
|
13
|
+
<#anySubj> [ <#propProp> "red" ] <#anyObj>.
|
14
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# Test data in notation3 http://www.w3.org/DesignIssues/Notation3.html
|
2
|
+
#
|
3
|
+
@prefix u: <http://www.example.org/utilities#> .
|
4
|
+
@prefix : <#> .
|
5
|
+
|
6
|
+
:assumption = { :fred u:knows :john .
|
7
|
+
:john u:knows :mary .} .
|
8
|
+
|
9
|
+
:conclusion = { :fred u:knows :mary . } .
|
10
|
+
|
11
|
+
# The empty context is trivially true.
|
12
|
+
# Check that we can input it and output it!
|
13
|
+
|
14
|
+
:trivialTruth = { }.
|
15
|
+
|
16
|
+
# ENDS
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# Suitable prefixes for DAML-ONT etc
|
2
|
+
|
3
|
+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
4
|
+
@prefix s: <http://www.w3.org/2000/01/rdf-schema#> .
|
5
|
+
@prefix daml: <http://www.daml.org/2001/03/daml-ont#> .
|
6
|
+
@prefix dpo: <http://www.daml.org/2001/03/daml+oil#> .
|
7
|
+
@prefix ex: <http://www.daml.org/2001/03/daml-ex#> .
|
8
|
+
@prefix log: <http://www.w3.org/2000/10/swap/log#> .
|
9
|
+
|
10
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#
|
2
|
+
# TEST of unicode invariou splaces.
|
3
|
+
# Note: D<C3><BC>rst is the utf-8 encodeing
|
4
|
+
#
|
5
|
+
# Base was: file:/devel/WWW/2000/10/swap/test/i18n/umlaut.rdf
|
6
|
+
@prefix s: <http://www.w3.org/2000/01/rdf-schema#> .
|
7
|
+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
8
|
+
@prefix : <#>.
|
9
|
+
|
10
|
+
[ s:label "Martin J D\u00fcrst" ; :script "ひらがな" ].
|
11
|
+
|
12
|
+
[] s:label "A test with a non-ascii qname"; :related :ひらがな.
|
13
|
+
[] s:label "A test with a non-ascii fragid"; :related <#Dürst>.
|
14
|
+
|
15
|
+
|
16
|
+
[] s:label "A test with a percent-encoded unicode char in an IRI";
|
17
|
+
:related <#D%C3%BCrst>.
|
18
|
+
|
19
|
+
|
20
|
+
<#D%C3%BCrst> a "URI percent ^encoded as C3, BC".
|
21
|
+
<#Dürst> a "URI straight in UTF8".
|
22
|
+
#ENDS
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<rdf:RDF
|
2
|
+
xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
|
3
|
+
xmlns='http://example/palmagent/danger#'>
|
4
|
+
<event rdf:about='#2414'>
|
5
|
+
<reminders rdf:parseType='Collection'>
|
6
|
+
<reminders_item>
|
7
|
+
<seconds_prior rdf:datatype='http://www.w3.org/2001/XMLSchema#integer'>432000</seconds_prior>
|
8
|
+
</reminders_item>
|
9
|
+
<rdf:Description rdf:about="http://example/foo#"/>
|
10
|
+
</reminders>
|
11
|
+
</event>
|
12
|
+
</rdf:RDF>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# Test list syntax
|
2
|
+
#
|
3
|
+
# With no {} so it can be translated in DAML easily
|
4
|
+
#
|
5
|
+
|
6
|
+
@prefix t: <http://example.com/test#> .
|
7
|
+
@prefix : <http://example.com/test#> .
|
8
|
+
@prefix log: <http://www.w3.org/2000/10/swap/log#> .
|
9
|
+
|
10
|
+
# This is cheating a bit - in case output of
|
11
|
+
# first and rest or equivalentTo is needed.
|
12
|
+
|
13
|
+
@prefix dpo: <http://www.daml.org/2001/03/daml+oil#>.
|
14
|
+
@prefix owl: <http://www.w3.org/2002/07/owl#>.
|
15
|
+
|
16
|
+
|
17
|
+
:a_threebrackets = ( ( ( :fff ) ) ) .
|
18
|
+
|
19
|
+
[ :anonVerb12 :anonObj12 ] :verb12 :obj12.
|
20
|
+
|
21
|
+
:threeItems = ( :b :c :d ) .
|
22
|
+
|
23
|
+
:nested =( :first :second ( :left3 :right3 ) :fourth ) .
|
24
|
+
|
25
|
+
:emptyList = ( ) .
|
26
|
+
|
27
|
+
:listOf2Empties = (()()) .
|
28
|
+
|
29
|
+
:twoAnons = ([a :mother][a :father]).
|
30
|
+
|
31
|
+
() :verb0 :object0.
|
32
|
+
( "subj1" ) :verb1 :object1.
|
33
|
+
( "subj2a" "subj2b" ) :verb2 :object2.
|
34
|
+
|
35
|
+
# Supressed: - see lists.n3 for version with this in
|
36
|
+
# :twoFormulae = ({:a a :mother} {:b a :father}).
|
37
|
+
|
38
|
+
|
39
|
+
#ENDS
|
40
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# Test list syntax
|
2
|
+
#
|
3
|
+
|
4
|
+
@prefix t: <test#> .
|
5
|
+
@prefix : <test#> .
|
6
|
+
@prefix ont: <http://www.w3.org/2000/10/swap/log#> .
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
:threeItems = ( :b :c :d ) .
|
11
|
+
|
12
|
+
:nested =( :first :second ( :left3 :right3 ) :fourth ) .
|
13
|
+
|
14
|
+
:emptyList = ( ) .
|
15
|
+
|
16
|
+
:listOf2Empties = (()()) .
|
17
|
+
|
18
|
+
:twoAnons = ([a :mother][a :father]).
|
19
|
+
|
20
|
+
() :verb0 :object0.
|
21
|
+
( "subj1" ) :verb1 :object1.
|
22
|
+
( "subj2a" "subj2b" ) :verb2 :object2.
|
23
|
+
|
24
|
+
|
25
|
+
# N3 only:
|
26
|
+
|
27
|
+
( 1 ) <#linksEqualLists> ( 1 ) .
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
:twoFormulae = ({:a a :mother} {:b a :father}).
|
32
|
+
|
33
|
+
|
34
|
+
#ENDS
|
35
|
+
|
@@ -0,0 +1,7 @@
|
|
1
|
+
|
2
|
+
<http://example.com/foo#a> <http://example.com/foo#b> <http://example.com/foo#c> .
|
3
|
+
|
4
|
+
<http://example.com/foo#hyphen-ated> <http://example.com/foo#dot.ted> <http://example.com/foo#hyphen-and.dot> .
|
5
|
+
|
6
|
+
<http://example.com/foo#minus-_underscore> <http://example.com/foo#under_score> <http://example.com/foo#underscore_-minus> .
|
7
|
+
|
@@ -0,0 +1,119 @@
|
|
1
|
+
|
2
|
+
_:g39 <http://www.w3.org/2002/07/owl#oneOf> _:li3 .
|
3
|
+
|
4
|
+
_:li3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#a" .
|
5
|
+
|
6
|
+
_:li3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:li2 .
|
7
|
+
|
8
|
+
_:li2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#b" .
|
9
|
+
|
10
|
+
_:li2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:li1 .
|
11
|
+
|
12
|
+
_:li1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#c" .
|
13
|
+
|
14
|
+
_:li1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
|
15
|
+
|
16
|
+
_:g40 <http://www.w3.org/2002/07/owl#oneOf> _:li6 .
|
17
|
+
|
18
|
+
_:li6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#x" .
|
19
|
+
|
20
|
+
_:li6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:li5 .
|
21
|
+
|
22
|
+
_:li5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#y" .
|
23
|
+
|
24
|
+
_:li5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:li4 .
|
25
|
+
|
26
|
+
_:li4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#z" .
|
27
|
+
|
28
|
+
_:li4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
|
29
|
+
|
30
|
+
_:g41 <http://www.w3.org/2002/07/owl#oneOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
|
31
|
+
|
32
|
+
_:g42 <http://www.w3.org/2002/07/owl#oneOf> _:li8 .
|
33
|
+
|
34
|
+
_:li8 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:g14 .
|
35
|
+
|
36
|
+
_:li8 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:li7 .
|
37
|
+
|
38
|
+
_:li7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:g18 .
|
39
|
+
|
40
|
+
_:li7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
|
41
|
+
|
42
|
+
_:g43 <http://www.w3.org/2002/07/owl#oneOf> _:li9 .
|
43
|
+
|
44
|
+
_:li9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:g27 .
|
45
|
+
|
46
|
+
_:li9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
|
47
|
+
|
48
|
+
_:g44 <http://www.w3.org/2002/07/owl#oneOf> _:li10 .
|
49
|
+
|
50
|
+
_:li10 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:g10 .
|
51
|
+
|
52
|
+
_:li10 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
|
53
|
+
|
54
|
+
_:b _:a _:c .
|
55
|
+
|
56
|
+
_:g7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/10/swap/log#Truth> .
|
57
|
+
|
58
|
+
_:g7 <http://www.w3.org/2004/06/rei#existentials> _:g39 .
|
59
|
+
|
60
|
+
_:g7 <http://www.w3.org/2004/06/rei#statements> _:g44 .
|
61
|
+
|
62
|
+
_:g7 <http://www.w3.org/2004/06/rei#universals> _:g40 .
|
63
|
+
|
64
|
+
_:g10 <http://www.w3.org/2004/06/rei#object> _:g24 .
|
65
|
+
|
66
|
+
_:g10 <http://www.w3.org/2004/06/rei#predicate> _:g23 .
|
67
|
+
|
68
|
+
_:g10 <http://www.w3.org/2004/06/rei#subject> _:g11 .
|
69
|
+
|
70
|
+
_:g11 <http://www.w3.org/2004/06/rei#existentials> _:g41 .
|
71
|
+
|
72
|
+
_:g11 <http://www.w3.org/2004/06/rei#statements> _:g42 .
|
73
|
+
|
74
|
+
_:g11 <http://www.w3.org/2004/06/rei#universals> _:g41 .
|
75
|
+
|
76
|
+
_:g14 <http://www.w3.org/2004/06/rei#object> _:g17 .
|
77
|
+
|
78
|
+
_:g14 <http://www.w3.org/2004/06/rei#predicate> _:g16 .
|
79
|
+
|
80
|
+
_:g14 <http://www.w3.org/2004/06/rei#subject> _:g15 .
|
81
|
+
|
82
|
+
_:g15 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#x" .
|
83
|
+
|
84
|
+
_:g16 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#mother" .
|
85
|
+
|
86
|
+
_:g17 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#y" .
|
87
|
+
|
88
|
+
_:g18 <http://www.w3.org/2004/06/rei#object> _:g21 .
|
89
|
+
|
90
|
+
_:g18 <http://www.w3.org/2004/06/rei#predicate> _:g20 .
|
91
|
+
|
92
|
+
_:g18 <http://www.w3.org/2004/06/rei#subject> _:g19 .
|
93
|
+
|
94
|
+
_:g19 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#y" .
|
95
|
+
|
96
|
+
_:g20 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#sister" .
|
97
|
+
|
98
|
+
_:g21 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#z" .
|
99
|
+
|
100
|
+
_:g23 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/log#implies" .
|
101
|
+
|
102
|
+
_:g24 <http://www.w3.org/2004/06/rei#existentials> _:g41 .
|
103
|
+
|
104
|
+
_:g24 <http://www.w3.org/2004/06/rei#statements> _:g43 .
|
105
|
+
|
106
|
+
_:g24 <http://www.w3.org/2004/06/rei#universals> _:g41 .
|
107
|
+
|
108
|
+
_:g27 <http://www.w3.org/2004/06/rei#object> _:g30 .
|
109
|
+
|
110
|
+
_:g27 <http://www.w3.org/2004/06/rei#predicate> _:g29 .
|
111
|
+
|
112
|
+
_:g27 <http://www.w3.org/2004/06/rei#subject> _:g28 .
|
113
|
+
|
114
|
+
_:g28 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#x" .
|
115
|
+
|
116
|
+
_:g29 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#aunt" .
|
117
|
+
|
118
|
+
_:g30 <http://www.w3.org/2004/06/rei#uri> "http://www.w3.org/2000/10/swap/test/syntax/foo.n3#z" .
|
119
|
+
|