rdf-rdfxml 0.2.2 → 0.2.2.1
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 +1 -0
- data/History.txt +5 -0
- data/VERSION +1 -1
- data/lib/rdf/rdfxml/patches/literal_hacks.rb +1 -1
- data/lib/rdf/rdfxml/patches/qname_hacks.rb +1 -1
- data/lib/rdf/rdfxml/version.rb +2 -2
- data/lib/rdf/rdfxml/writer.rb +3 -3
- data/rdf-rdfxml.gemspec +3 -3
- data/script/console +2 -2
- data/script/parse +1 -1
- data/script/tc +49 -0
- data/spec/format_spec.rb +1 -0
- data/spec/graph_spec.rb +1 -0
- data/spec/literal_spec.rb +16 -5
- data/spec/reader_spec.rb +18 -9
- data/spec/spec_helper.rb +1 -0
- data/spec/uri_spec.rb +35 -0
- data/spec/writer_spec.rb +20 -11
- metadata +5 -5
- data/spec/rdf-iso-falure.rb +0 -35
data/.gitignore
CHANGED
data/History.txt
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
=== 0.2.2.1
|
2
|
+
* Ruby 1.9.2 support.
|
3
|
+
* Added script/tc to run test cases
|
4
|
+
* Mark failing XMLLiteral tests as pending
|
5
|
+
|
1
6
|
=== 0.2.2
|
2
7
|
* Fix bug creating datatyped literal where datatype is a string, not an RDF::URI
|
3
8
|
* Added more XMLLiteral tests (fail, until full canonicalization working)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.2
|
1
|
+
0.2.2.1
|
@@ -22,7 +22,7 @@ module RDF; class Literal
|
|
22
22
|
# @option options [String] :lexical (nil)
|
23
23
|
# @option options [Hash] :namespaces ({}) Use :__default__ or "" to declare default namespace
|
24
24
|
# @option options [Symbol] :language (nil)
|
25
|
-
# @option options [
|
25
|
+
# @option options [:nokogiri, :libxml, or :rexml] :library
|
26
26
|
def initialize(value, options = {})
|
27
27
|
options[:namespaces] ||= {}
|
28
28
|
|
@@ -21,7 +21,7 @@ module RDF
|
|
21
21
|
raise "Vocab #{vocab.inspect} is not a Vocabulary!" if vocab.is_a?(Array)
|
22
22
|
vocab_name = vocab.__name__.to_s.split('::').last.downcase
|
23
23
|
local_name = to_s[vocab.to_uri.to_s.size..-1]
|
24
|
-
vocab_name && local_name && [vocab_name.to_sym, local_name.to_sym]
|
24
|
+
vocab_name && local_name && [vocab_name.to_sym, local_name.empty? ? nil : local_name.to_sym]
|
25
25
|
end
|
26
26
|
end
|
27
27
|
#end
|
data/lib/rdf/rdfxml/version.rb
CHANGED
data/lib/rdf/rdfxml/writer.rb
CHANGED
@@ -123,7 +123,7 @@ module RDF::RDFXML
|
|
123
123
|
prefix(:xml, RDF::XML) if @base_uri || @lang
|
124
124
|
|
125
125
|
if @default_namespace
|
126
|
-
prefix(:__default__, @default_namespace)
|
126
|
+
prefix(:__default__, @default_namespace.respond_to?(:to_uri) ? @default_namespace.to_uri : @default_namespace)
|
127
127
|
@default_namespace_prefix = prefixes.invert[@default_namespace]
|
128
128
|
add_debug("def_namespace: #{@default_namespace}, prefix: #{@default_namespace_prefix}")
|
129
129
|
end
|
@@ -376,7 +376,7 @@ module RDF::RDFXML
|
|
376
376
|
if uri.is_a?(RDF::URI)
|
377
377
|
# Duplicate logic from URI#qname to remember namespace assigned
|
378
378
|
if uri.qname
|
379
|
-
prefix(uri.qname.first, uri.vocab)
|
379
|
+
prefix(uri.qname.first, uri.vocab.to_uri)
|
380
380
|
add_debug "get_qname(uri.qname): #{uri.qname.join(':')}"
|
381
381
|
return uri.qname.join(":")
|
382
382
|
end
|
@@ -411,7 +411,7 @@ module RDF::RDFXML
|
|
411
411
|
@tmp_ns = @tmp_ns ? @tmp_ns.succ : "ns0"
|
412
412
|
add_debug "create namespace definition for #{uri}"
|
413
413
|
uri.vocab = RDF::Vocabulary(base_uri)
|
414
|
-
prefix(@tmp_ns.to_sym, uri.vocab)
|
414
|
+
prefix(@tmp_ns.to_sym, uri.vocab.to_uri)
|
415
415
|
add_debug "get_qname(tmp_ns): #{@tmp_ns}:#{local_name}"
|
416
416
|
return "#{@tmp_ns}:#{local_name}"
|
417
417
|
end
|
data/rdf-rdfxml.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rdf-rdfxml}
|
8
|
-
s.version = "0.2.2"
|
8
|
+
s.version = "0.2.2.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Gregg Kellogg"]
|
12
|
-
s.date = %q{2010-08-
|
12
|
+
s.date = %q{2010-08-11}
|
13
13
|
s.description = %q{ RDF::RDFXML is an RDF/XML reader and writer for Ruby using the RDF.rb library suite.
|
14
14
|
}
|
15
15
|
s.email = %q{gregg@kellogg-assoc.com}
|
@@ -47,6 +47,7 @@ Gem::Specification.new do |s|
|
|
47
47
|
"rdf-rdfxml.gemspec",
|
48
48
|
"script/console",
|
49
49
|
"script/parse",
|
50
|
+
"script/tc",
|
50
51
|
"spec/format_spec.rb",
|
51
52
|
"spec/graph_spec.rb",
|
52
53
|
"spec/literal_spec.rb",
|
@@ -427,7 +428,6 @@ Gem::Specification.new do |s|
|
|
427
428
|
"spec/graph_spec.rb",
|
428
429
|
"spec/literal_spec.rb",
|
429
430
|
"spec/matchers.rb",
|
430
|
-
"spec/rdf-iso-falure.rb",
|
431
431
|
"spec/rdf_helper.rb",
|
432
432
|
"spec/reader_spec.rb",
|
433
433
|
"spec/spec_helper.rb",
|
data/script/console
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
4
4
|
|
5
5
|
libs = " -r irb/completion"
|
6
|
-
RDF = File.dirname(__FILE__)
|
6
|
+
RDF = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "rdf", "lib"))
|
7
7
|
libs << " -I #{RDF}" if File.directory?(RDF)
|
8
|
-
libs << " -r #{File.dirname(__FILE__)
|
8
|
+
libs << " -r #{File.join(File.expand_path(File.dirname(__FILE__)), "..", "lib", "rdf", "rdfxml.rb")}"
|
9
9
|
puts "Loading rdf-rdfxml gem"
|
10
10
|
exec "#{irb} #{libs} --simple-prompt"
|
data/script/parse
CHANGED
data/script/tc
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
#!/usr/bin/env ruby -s
|
2
|
+
require 'rubygems'
|
3
|
+
$:.unshift(File.expand_path(File.join(File.dirname(__FILE__), "..", 'lib')))
|
4
|
+
require 'rdf/rdfxml'
|
5
|
+
require 'spec/rdf_helper'
|
6
|
+
require 'getoptlong'
|
7
|
+
|
8
|
+
def run_tc(tc)
|
9
|
+
puts "run #{tc.name}"
|
10
|
+
puts RDF::Writer.for($format.to_sym).buffer { |writer|
|
11
|
+
RDF::RDFXML::Reader.new(tc.input, :base_uri => tc.about, :strict => $strict).each do |statement|
|
12
|
+
writer << statement
|
13
|
+
end
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
$verbose = false
|
18
|
+
$format = :ntriples
|
19
|
+
$strict = false
|
20
|
+
suite = "rdfxml"
|
21
|
+
opts = GetoptLong.new(
|
22
|
+
["--debug", GetoptLong::NO_ARGUMENT],
|
23
|
+
["--verbose", GetoptLong::NO_ARGUMENT],
|
24
|
+
["--quiet", GetoptLong::NO_ARGUMENT],
|
25
|
+
["--suite", GetoptLong::OPTIONAL_ARGUMENT],
|
26
|
+
["--strict", GetoptLong::NO_ARGUMENT],
|
27
|
+
["--format", GetoptLong::REQUIRED_ARGUMENT]
|
28
|
+
)
|
29
|
+
opts.each do |opt, arg|
|
30
|
+
case opt
|
31
|
+
when '--verbose' then $verbose = true
|
32
|
+
when '--quiet' then $quiet = true
|
33
|
+
when '--debug' then $DEBUG = true
|
34
|
+
when '--format' then $format = arg
|
35
|
+
when '--suite' then suite = arg
|
36
|
+
when '--strict' then $strict = true
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# Test URI and directory for different suites
|
41
|
+
TEST_PARAMS = {
|
42
|
+
"rdfxml" => [RDFCORE_TEST, RDFCORE_DIR],
|
43
|
+
}
|
44
|
+
test_cases = RdfHelper::TestCase.test_cases(*TEST_PARAMS[suite])
|
45
|
+
|
46
|
+
test_cases = test_cases.detect do |tc|
|
47
|
+
next unless ARGV.empty? || ARGV.any? {|n| tc.name.match(/#{n}/)}
|
48
|
+
run_tc(tc)
|
49
|
+
end
|
data/spec/format_spec.rb
CHANGED
data/spec/graph_spec.rb
CHANGED
data/spec/literal_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
$:.unshift "."
|
2
3
|
require File.join(File.dirname(__FILE__), 'spec_helper')
|
3
4
|
require 'nokogiri'
|
4
5
|
|
@@ -121,7 +122,9 @@ describe RDF::Literal do
|
|
121
122
|
"my" => "http://my.example.org/",
|
122
123
|
})
|
123
124
|
|
124
|
-
|
125
|
+
pending do
|
126
|
+
l.to_s.should == "\n <html:h1 xmlns:html=\"http://NoHTML.example.org\">\n <b xmlns=\"http://www.w3.org/1999/xhtml\">John</b>\n </html:h1>\n "
|
127
|
+
end
|
125
128
|
end
|
126
129
|
|
127
130
|
it "should reproduce test002" do
|
@@ -194,7 +197,9 @@ describe RDF::Literal do
|
|
194
197
|
"svg" => "http://www.w3.org/2000/svg",
|
195
198
|
})
|
196
199
|
|
197
|
-
|
200
|
+
pending do
|
201
|
+
l.to_s.should == "Some text here in <strong xmlns=\"http://www.w3.org/1999/xhtml\">bold</strong> and an svg rectangle: <svg:svg xmlns:svg=\"http://www.w3.org/2000/svg\"><svg:rect svg:height=\"100\" svg:width=\"200\"></svg:rect></svg:svg>"
|
202
|
+
end
|
198
203
|
end
|
199
204
|
|
200
205
|
it "should reproduce 0101: XMLLiteral with explicit namespace and xml:lang" do
|
@@ -205,7 +210,9 @@ describe RDF::Literal do
|
|
205
210
|
"svg" => "http://www.w3.org/2000/svg",
|
206
211
|
})
|
207
212
|
|
208
|
-
|
213
|
+
pending do
|
214
|
+
l.to_s.should == "Du texte ici en <strong xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\">gras</strong> et un rectangle en svg: <svg:svg xmlns:svg=\"http://www.w3.org/2000/svg\" xml:lang=\"fr\"><svg:rect svg:height=\"100\" svg:width=\"200\"></svg:rect></svg:svg>"
|
215
|
+
end
|
209
216
|
end
|
210
217
|
|
211
218
|
it "should reproduce test 0102: XMLLiteral with explicit namespace and xml:lang; not overwriting existing langs" do
|
@@ -216,7 +223,9 @@ describe RDF::Literal do
|
|
216
223
|
"svg" => "http://www.w3.org/2000/svg",
|
217
224
|
})
|
218
225
|
|
219
|
-
|
226
|
+
pending do
|
227
|
+
l.to_s.should == "Du texte ici en <strong xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\">gras</strong> et un rectangle en svg: <svg:svg xmlns:svg=\"http://www.w3.org/2000/svg\" xml:lang=\"hu\"><svg:rect svg:height=\"100\" svg:width=\"200\"></svg:rect></svg:svg>"
|
228
|
+
end
|
220
229
|
end
|
221
230
|
|
222
231
|
it "should reproduce test 0103: XMLLiteral with explicit namespace; not overwriting local namespaces" do
|
@@ -227,7 +236,9 @@ describe RDF::Literal do
|
|
227
236
|
"svg" => "http://www.w3.org/2000/svg",
|
228
237
|
})
|
229
238
|
|
230
|
-
|
239
|
+
pending do
|
240
|
+
l.to_s.should == "Some text here in <strong xmlns=\"http://www.w3.org/1999/xhtml\">bold</strong> and an svg rectangle: <svg xmlns=\"http://www.w3.org/2000/svg\"><rect height=\"100\" width=\"200\"></rect></svg>"
|
241
|
+
end
|
231
242
|
end
|
232
243
|
end
|
233
244
|
end if defined?(::Nokogiri)
|
data/spec/reader_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
$:.unshift "."
|
2
3
|
require File.join(File.dirname(__FILE__), 'spec_helper')
|
3
4
|
require 'rdf/spec/reader'
|
4
5
|
|
@@ -391,16 +392,24 @@ EOF
|
|
391
392
|
#next unless t.name =~ /11/
|
392
393
|
#puts t.inspect
|
393
394
|
specify "#{t.name}: " + (t.description || "#{t.inputDocument} against #{t.outputDocument}") do
|
394
|
-
|
395
|
-
t.
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
395
|
+
begin
|
396
|
+
t.run_test do |rdf_string|
|
397
|
+
t.debug = []
|
398
|
+
g = RDF::Graph.new
|
399
|
+
@reader.new(rdf_string,
|
400
|
+
:base_uri => t.about,
|
401
|
+
:strict => true,
|
402
|
+
:debug => t.debug).each do |statement|
|
403
|
+
g << statement
|
404
|
+
end
|
405
|
+
g
|
406
|
+
end
|
407
|
+
rescue Spec::Expectations::ExpectationNotMetError => e
|
408
|
+
if t.inputDocument =~ %r(rdfms-xml-literal-namespaces/test001.rdf)
|
409
|
+
pending("XMLLiteral canonicalization not implemented yet")
|
410
|
+
else
|
411
|
+
raise
|
402
412
|
end
|
403
|
-
g
|
404
413
|
end
|
405
414
|
end
|
406
415
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/uri_spec.rb
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
$:.unshift "."
|
2
3
|
require File.join(File.dirname(__FILE__), 'spec_helper')
|
3
4
|
|
4
5
|
describe RDF::URI do
|
6
|
+
class EXa < RDF::Vocabulary("http://example.org/foo/"); end
|
7
|
+
class EXb < RDF::Vocabulary("http://example.org/foo#"); end
|
8
|
+
class EXc < RDF::Vocabulary("http://example.org/foo"); end
|
9
|
+
|
5
10
|
subject { RDF::URI.new("http://example.org")}
|
6
11
|
|
7
12
|
context "join" do
|
@@ -71,4 +76,34 @@ describe RDF::URI do
|
|
71
76
|
end
|
72
77
|
end
|
73
78
|
end
|
79
|
+
|
80
|
+
context "qname" do
|
81
|
+
it "should create [:rdf, :foo]" do
|
82
|
+
RDF.foo.qname.should == [:rdf, :foo]
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should create [:rdfs, nil]" do
|
86
|
+
RDF::RDFS.to_uri.qname.should == [:rdfs, nil]
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should find with trailing /" do
|
90
|
+
EXa.bar.qname.should == [:exa, :bar]
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should find with trailing #" do
|
94
|
+
EXb.bar.qname.should == [:exb, :bar]
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should find with trailing word" do
|
98
|
+
EXc.bar.qname.should == [:exc, :bar]
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
context "vocab" do
|
103
|
+
RDF::Vocabulary.each do |v|
|
104
|
+
specify {v.foo.vocab.should == v}
|
105
|
+
specify {v.foo.vocab.to_uri.to_s.should == v.to_uri.to_s}
|
106
|
+
specify {v.to_s.should == v.to_uri.to_s} unless v == RDF
|
107
|
+
end
|
108
|
+
end
|
74
109
|
end
|
data/spec/writer_spec.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
$:.unshift "."
|
1
2
|
require File.join(File.dirname(__FILE__), 'spec_helper')
|
2
3
|
require 'rdf/spec/writer'
|
3
4
|
autoload :CGI, 'cgi'
|
@@ -342,15 +343,11 @@ describe "RDF::RDFXML::Writer" do
|
|
342
343
|
end
|
343
344
|
|
344
345
|
it "should replicate rdfcore/rdfms-seq-representation" do
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
graph2.parse(serialize(:format => :xml)).should be_equivalent_graph(@graph, :trace => @debug.join("\n"))
|
351
|
-
rescue
|
352
|
-
pending("Requires Turtle reader")
|
353
|
-
end
|
346
|
+
$verbose = true
|
347
|
+
graph_expect = parse(%(
|
348
|
+
<http://example.org/eg#eric> a [ <http://example.org/eg#intersectionOf> (<http://example.org/eg#Person> <http://example.org/eg#Male>)] .
|
349
|
+
), :reader => RDF::N3::Reader)
|
350
|
+
graph_check = parse(serialize(:format => :xml)).should be_equivalent_graph(@graph, :trace => @debug.join("\n"))
|
354
351
|
end
|
355
352
|
end
|
356
353
|
|
@@ -380,14 +377,26 @@ describe "RDF::RDFXML::Writer" do
|
|
380
377
|
#RDF::RDFXML::Reader.new(doc, :base_uri => "http://release/", :format => :rdf).each {|st| graph << st}
|
381
378
|
#graph.should be_equivalent_graph(@graph, :about => "http://release/", :trace => @debug.join("\n"))
|
382
379
|
end
|
383
|
-
|
380
|
+
|
381
|
+
require 'rdf/n3'
|
382
|
+
def parse(input, options = {})
|
383
|
+
reader_class = options.fetch(:reader, detect_format(input))
|
384
|
+
|
385
|
+
graph = RDF::Graph.new
|
386
|
+
reader_class.new(input, options).each do |statement|
|
387
|
+
graph << statement
|
388
|
+
end
|
389
|
+
graph
|
390
|
+
end
|
391
|
+
|
384
392
|
# Serialize ntstr to a string and compare against regexps
|
385
393
|
def serialize(options = {})
|
386
394
|
@debug = []
|
387
395
|
result = @writer.buffer(options.merge(:debug => @debug)) do |writer|
|
388
396
|
writer << @graph
|
389
397
|
end
|
390
|
-
|
398
|
+
require 'cgi'
|
399
|
+
puts CGI.escapeHTML(result) if $verbose
|
391
400
|
result
|
392
401
|
end
|
393
402
|
end
|
metadata
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-rdfxml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 85
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
9
|
- 2
|
10
|
-
|
10
|
+
- 1
|
11
|
+
version: 0.2.2.1
|
11
12
|
platform: ruby
|
12
13
|
authors:
|
13
14
|
- Gregg Kellogg
|
@@ -15,7 +16,7 @@ autorequire:
|
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2010-08-
|
19
|
+
date: 2010-08-11 00:00:00 -07:00
|
19
20
|
default_executable:
|
20
21
|
dependencies:
|
21
22
|
- !ruby/object:Gem::Dependency
|
@@ -147,6 +148,7 @@ files:
|
|
147
148
|
- rdf-rdfxml.gemspec
|
148
149
|
- script/console
|
149
150
|
- script/parse
|
151
|
+
- script/tc
|
150
152
|
- spec/format_spec.rb
|
151
153
|
- spec/graph_spec.rb
|
152
154
|
- spec/literal_spec.rb
|
@@ -516,7 +518,6 @@ files:
|
|
516
518
|
- spec/spec_helper.rb
|
517
519
|
- spec/uri_spec.rb
|
518
520
|
- spec/writer_spec.rb
|
519
|
-
- spec/rdf-iso-falure.rb
|
520
521
|
has_rdoc: true
|
521
522
|
homepage: http://github.com/gkellogg/rdf-rdfxml
|
522
523
|
licenses: []
|
@@ -556,7 +557,6 @@ test_files:
|
|
556
557
|
- spec/graph_spec.rb
|
557
558
|
- spec/literal_spec.rb
|
558
559
|
- spec/matchers.rb
|
559
|
-
- spec/rdf-iso-falure.rb
|
560
560
|
- spec/rdf_helper.rb
|
561
561
|
- spec/reader_spec.rb
|
562
562
|
- spec/spec_helper.rb
|
data/spec/rdf-iso-falure.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'rdf'
|
4
|
-
require 'rdf/rdfxml'
|
5
|
-
require 'rdf/ntriples'
|
6
|
-
require 'rdf/isomorphic'
|
7
|
-
|
8
|
-
s1 = %(<?xml version="1.0"?>
|
9
|
-
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
10
|
-
xmlns:eg="http://example.org/">
|
11
|
-
<rdf:Description rdf:about="http://example.org/foo">
|
12
|
-
<eg:bar rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">10</eg:bar>
|
13
|
-
<eg:baz rdf:datatype="http://www.w3.org/2001/XMLSchema#integer" xml:lang="fr">10</eg:baz>
|
14
|
-
</rdf:Description>
|
15
|
-
</rdf:RDF>)
|
16
|
-
|
17
|
-
s2 = %(<http://example.org/foo> <http://example.org/bar> "10"^^<http://www.w3.org/2001/XMLSchema#integer> .
|
18
|
-
<http://example.org/foo> <http://example.org/baz> "10"^^<http://www.w3.org/2001/XMLSchema#integer> .
|
19
|
-
)
|
20
|
-
|
21
|
-
g1 = RDF::Graph.new
|
22
|
-
RDF::RDFXML::Reader.new(s1).each {|s| g1 << s}
|
23
|
-
|
24
|
-
g1.each do |s|
|
25
|
-
puts s.object.datatype.inspect
|
26
|
-
end
|
27
|
-
|
28
|
-
res1 = g1.map(&:to_ntriples).join("")
|
29
|
-
|
30
|
-
g2 = RDF::Graph.new
|
31
|
-
RDF::NTriples::Reader.new(s2).each {|s| g2 << s}
|
32
|
-
|
33
|
-
puts g1.isomorphic_with?(g2) ? "graphs isomorphic" : "graphs non-isomorphic"
|
34
|
-
|
35
|
-
puts res1 == s2 ? "strings equivalent" : "strings differ"
|