rdf-n3 1.1.3.1 → 1.99.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -6
- data/VERSION +1 -1
- data/lib/rdf/n3/format.rb +6 -6
- data/lib/rdf/n3/patches/array_hacks.rb +1 -1
- data/lib/rdf/n3/reader.rb +14 -14
- data/lib/rdf/n3/reader/parser.rb +2 -2
- data/lib/rdf/n3/writer.rb +11 -11
- metadata +5 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9b52d4f54d09368875b654dad895204b3fe645c
|
4
|
+
data.tar.gz: ab49163f1b25a7deb4982273c7ef698504624d4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8308ad1b87c6905d0e6ab9551adc67f851c689d0a21713e22da310fddf66c241ca46752c0468de1778fe5a27235d8dc826c6172894db21a149155451c3842a7a
|
7
|
+
data.tar.gz: bed77496be0b312dbaa8ac1a63a2647bfefbd4c0e542ff64fe3389a84eb15d31be45c4e8653626a6ce129a43f2129319809e4addd492216dd4825aabb139729f
|
data/README.md
CHANGED
@@ -41,7 +41,7 @@ Write a graph to a file:
|
|
41
41
|
end
|
42
42
|
|
43
43
|
### Formulae
|
44
|
-
N3 Formulae are introduced with the { statement-list } syntax. A given formula is assigned an RDF::Node instance, which is also used as the
|
44
|
+
N3 Formulae are introduced with the { statement-list } syntax. A given formula is assigned an RDF::Node instance, which is also used as the graph_name for RDF::Statement instances provided to RDF::N3::Reader#each_statement. For example, the following N3 generates the associated statements:
|
45
45
|
|
46
46
|
{ [ x:firstname "Ora" ] dc:wrote [ dc:title "Moby Dick" ] } a n3:falsehood .
|
47
47
|
|
@@ -51,9 +51,9 @@ results in
|
|
51
51
|
s = RDF::Node.new
|
52
52
|
o = RDF::Node.new
|
53
53
|
RDF::Statement(f, rdf:type n3:falsehood)
|
54
|
-
RDF::Statement(s, x:firstname, "Ora", :
|
55
|
-
RDF::Statement(s, dc:wrote, o, :
|
56
|
-
RDF::Statement(o, dc:title, "Moby Dick", :
|
54
|
+
RDF::Statement(s, x:firstname, "Ora", graph_name: f)
|
55
|
+
RDF::Statement(s, dc:wrote, o, graph_name: f)
|
56
|
+
RDF::Statement(o, dc:title, "Moby Dick", graph_name: f)
|
57
57
|
|
58
58
|
### Variables
|
59
59
|
N3 Variables are introduced with @forAll, @forEach, or ?x. Variables reference URIs described in formulae, typically defined in the default vocabulary (e.g., ":x"). Existential variables are replaced with an allocated RDF::Node instance. Universal variables are replaced with a RDF::Query::Variable instance. For example, the following N3 generates the associated statements:
|
@@ -100,8 +100,8 @@ Full documentation available on [RubyDoc.info](http://rubydoc.info/github/ruby-r
|
|
100
100
|
* {RDF::REI}
|
101
101
|
|
102
102
|
### Patches
|
103
|
-
*
|
104
|
-
*
|
103
|
+
* `Array`
|
104
|
+
* `RDF::List`
|
105
105
|
|
106
106
|
## Resources
|
107
107
|
* [RDF.rb][RDF.rb]
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.99.0
|
data/lib/rdf/n3/format.rb
CHANGED
@@ -5,19 +5,19 @@ module RDF::N3
|
|
5
5
|
# @example Obtaining an Notation3 format class
|
6
6
|
# RDF::Format.for(:n3) #=> RDF::N3::Format
|
7
7
|
# RDF::Format.for("etc/foaf.n3")
|
8
|
-
# RDF::Format.for(:
|
9
|
-
# RDF::Format.for(:
|
10
|
-
# RDF::Format.for(:
|
8
|
+
# RDF::Format.for(file_name: "etc/foaf.n3")
|
9
|
+
# RDF::Format.for(file_extension: "n3")
|
10
|
+
# RDF::Format.for(content_type: "text/n3")
|
11
11
|
#
|
12
12
|
# @example Obtaining serialization format MIME types
|
13
13
|
# RDF::Format.content_types #=> {"text/n3")" => [RDF::N3::Format]}
|
14
14
|
#
|
15
15
|
# @example Obtaining serialization format file extension mappings
|
16
|
-
# RDF::Format.file_extensions #=> {:
|
16
|
+
# RDF::Format.file_extensions #=> {n3: "text/n3"}
|
17
17
|
#
|
18
18
|
# @see http://www.w3.org/TR/rdf-testcases/#ntriples
|
19
19
|
class Format < RDF::Format
|
20
|
-
content_type 'text/n3', :
|
20
|
+
content_type 'text/n3', extension: :n3, aliases: %w(text/rdf+n3 application/rdf+n3)
|
21
21
|
content_encoding 'utf-8'
|
22
22
|
|
23
23
|
reader { RDF::N3::Reader }
|
@@ -33,7 +33,7 @@ module RDF::N3
|
|
33
33
|
# RDF::Format.for(:ttl).reader #=> RDF::N3::Reader
|
34
34
|
# RDF::Format.for(:ttl).writer #=> RDF::N3::Writer
|
35
35
|
class Notation3 < RDF::Format
|
36
|
-
content_type 'text/n3', :
|
36
|
+
content_type 'text/n3', extension: :n3
|
37
37
|
content_encoding 'utf-8'
|
38
38
|
|
39
39
|
reader { RDF::N3::Reader }
|
@@ -37,7 +37,7 @@ class Array
|
|
37
37
|
end
|
38
38
|
|
39
39
|
# options.assert_valid_keys(:words_connector, :two_words_connector, :last_word_connector, :locale)
|
40
|
-
options = {:
|
40
|
+
options = {words_connector: default_words_connector, two_words_connector: default_two_words_connector, last_word_connector: default_last_word_connector}.merge(options)
|
41
41
|
|
42
42
|
case length
|
43
43
|
when 0
|
data/lib/rdf/n3/reader.rb
CHANGED
@@ -147,7 +147,7 @@ module RDF::N3
|
|
147
147
|
end
|
148
148
|
|
149
149
|
def booleanToken(prod, tok)
|
150
|
-
lit = RDF::Literal.new(tok.delete("@"), :
|
150
|
+
lit = RDF::Literal.new(tok.delete("@"), datatype: RDF::XSD.boolean, validate: validate?, canonicalize: canonicalize?)
|
151
151
|
add_prod_data(:literal, lit)
|
152
152
|
end
|
153
153
|
|
@@ -223,7 +223,7 @@ module RDF::N3
|
|
223
223
|
pd = @prod_data.pop
|
224
224
|
forSome = Array(pd[:symbol])
|
225
225
|
forSome.each do |term|
|
226
|
-
@variables[term.to_s] = {:
|
226
|
+
@variables[term.to_s] = {formula: @formulae.last, var: RDF::Node.new(term.to_s.split(/[\/#]/).last)}
|
227
227
|
end
|
228
228
|
end
|
229
229
|
|
@@ -269,7 +269,7 @@ module RDF::N3
|
|
269
269
|
language = language.downcase if language && canonicalize?
|
270
270
|
datatype = lit[:symbol]
|
271
271
|
|
272
|
-
lit = RDF::Literal.new(content, :
|
272
|
+
lit = RDF::Literal.new(content, language: language, datatype: datatype, validate: validate?, canonicalize: canonicalize?)
|
273
273
|
add_prod_data(:literal, lit)
|
274
274
|
end
|
275
275
|
|
@@ -300,16 +300,16 @@ module RDF::N3
|
|
300
300
|
else RDF::XSD.integer
|
301
301
|
end
|
302
302
|
|
303
|
-
lit = RDF::Literal.new(nl, :
|
303
|
+
lit = RDF::Literal.new(nl, datatype: datatype, validate: validate?, canonicalize: canonicalize?)
|
304
304
|
add_prod_data(:literal, lit)
|
305
305
|
when "quickvariable"
|
306
306
|
# There is a also a shorthand syntax ?x which is the same as :x except that it implies that x is
|
307
307
|
# universally quantified not in the formula but in its parent formula
|
308
308
|
uri = process_qname(tok.sub('?', ':'))
|
309
|
-
@variables[uri.to_s] = { :
|
309
|
+
@variables[uri.to_s] = { formula: @formulae[-2], var: univar(uri) }
|
310
310
|
add_prod_data(:symbol, uri)
|
311
311
|
when "boolean"
|
312
|
-
lit = RDF::Literal.new(tok.delete("@"), :
|
312
|
+
lit = RDF::Literal.new(tok.delete("@"), datatype: RDF::XSD.boolean, validate: validate?, canonicalize: canonicalize?)
|
313
313
|
add_prod_data(:literal, lit)
|
314
314
|
when "[", "("
|
315
315
|
# Push on state for content of blank node
|
@@ -347,7 +347,7 @@ module RDF::N3
|
|
347
347
|
end
|
348
348
|
|
349
349
|
def pathlistStart(prod)
|
350
|
-
@prod_data << {:
|
350
|
+
@prod_data << {pathlist: []}
|
351
351
|
end
|
352
352
|
|
353
353
|
def pathlistFinish
|
@@ -359,7 +359,7 @@ module RDF::N3
|
|
359
359
|
end
|
360
360
|
|
361
361
|
def pathtailStart(prod)
|
362
|
-
@prod_data << {:
|
362
|
+
@prod_data << {pathtail: []}
|
363
363
|
end
|
364
364
|
|
365
365
|
def pathtailToken(prod, tok)
|
@@ -456,7 +456,7 @@ module RDF::N3
|
|
456
456
|
pd = @prod_data.pop
|
457
457
|
forAll = Array(pd[:symbol])
|
458
458
|
forAll.each do |term|
|
459
|
-
@variables[term.to_s] = { :
|
459
|
+
@variables[term.to_s] = { formula: @formulae.last, var: univar(term) }
|
460
460
|
end
|
461
461
|
end
|
462
462
|
|
@@ -573,7 +573,7 @@ module RDF::N3
|
|
573
573
|
# Access Working Group. Note that no existing documents will have used a naked true or false word, without a
|
574
574
|
# @keyword statement which would make it clear that they were not to be treated as keywords. Furthermore any
|
575
575
|
# old parser encountering true or false naked or in a @keywords
|
576
|
-
return RDF::Literal.new(tok, :
|
576
|
+
return RDF::Literal.new(tok, datatype: RDF::XSD.boolean)
|
577
577
|
else
|
578
578
|
error("Set user @keywords to use barenames.")
|
579
579
|
end
|
@@ -621,7 +621,7 @@ module RDF::N3
|
|
621
621
|
|
622
622
|
# Add debug event to debug array, if specified
|
623
623
|
#
|
624
|
-
# @param [any] node string for showing
|
624
|
+
# @param [any] node string for showing graph_name
|
625
625
|
# @param [String] message
|
626
626
|
# @yieldreturn [String] appended to message, to allow for lazy-evaulation of message
|
627
627
|
def add_debug(node, message = "")
|
@@ -633,16 +633,16 @@ module RDF::N3
|
|
633
633
|
|
634
634
|
# add a statement, object can be literal or URI or bnode
|
635
635
|
#
|
636
|
-
# @param [any] node string for showing
|
636
|
+
# @param [any] node string for showing graph_name
|
637
637
|
# @param [URI, Node] subject the subject of the statement
|
638
638
|
# @param [URI] predicate the predicate of the statement
|
639
639
|
# @param [URI, Node, Literal] object the object of the statement
|
640
640
|
# @return [Statement] Added statement
|
641
641
|
# @raise [RDF::ReaderError] Checks parameter types and raises if they are incorrect if parsing mode is _validate_.
|
642
642
|
def add_triple(node, subject, predicate, object)
|
643
|
-
|
643
|
+
graph_name_opts = @formulae.last ? {graph_name: @formulae.last} : {}
|
644
644
|
|
645
|
-
statement = RDF::Statement.new(subject, predicate, object,
|
645
|
+
statement = RDF::Statement.new(subject, predicate, object, graph_name_opts)
|
646
646
|
add_debug(node) {statement.to_s}
|
647
647
|
@callback.call(statement)
|
648
648
|
end
|
data/lib/rdf/n3/reader/parser.rb
CHANGED
@@ -13,7 +13,7 @@ module RDF::N3
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def parse(prod)
|
16
|
-
todo_stack = [{:
|
16
|
+
todo_stack = [{prod: prod, terms: nil}]
|
17
17
|
while !todo_stack.empty?
|
18
18
|
pushed = false
|
19
19
|
if todo_stack.last[:terms].nil?
|
@@ -81,7 +81,7 @@ module RDF::N3
|
|
81
81
|
end
|
82
82
|
else
|
83
83
|
puts "parse term(push): #{term}" if $verbose
|
84
|
-
todo_stack << {:
|
84
|
+
todo_stack << {prod: term, terms: nil}
|
85
85
|
pushed = true
|
86
86
|
break
|
87
87
|
end
|
data/lib/rdf/n3/writer.rb
CHANGED
@@ -10,11 +10,11 @@ module RDF::N3
|
|
10
10
|
# RDF::Writer.for(:n3) #=> RDF::N3::Writer
|
11
11
|
# RDF::Writer.for("etc/test.n3")
|
12
12
|
# RDF::Writer.for("etc/test.ttl")
|
13
|
-
# RDF::Writer.for(:
|
14
|
-
# RDF::Writer.for(:
|
15
|
-
# RDF::Writer.for(:
|
16
|
-
# RDF::Writer.for(:
|
17
|
-
# RDF::Writer.for(:
|
13
|
+
# RDF::Writer.for(file_name: "etc/test.n3")
|
14
|
+
# RDF::Writer.for(file_name: "etc/test.ttl")
|
15
|
+
# RDF::Writer.for(file_extension: "n3")
|
16
|
+
# RDF::Writer.for(file_extension: "ttl")
|
17
|
+
# RDF::Writer.for(content_type: "text/n3")
|
18
18
|
#
|
19
19
|
# @example Serializing RDF graph into an Turtle file
|
20
20
|
# RDF::N3::Writer.open("etc/test.n3") do |writer|
|
@@ -38,9 +38,9 @@ module RDF::N3
|
|
38
38
|
# The writer will add prefix definitions, and use them for creating @prefix definitions, and minting QNames
|
39
39
|
#
|
40
40
|
# @example Creating @base and @prefix definitions in output
|
41
|
-
# RDF::N3::Writer.buffer(:
|
41
|
+
# RDF::N3::Writer.buffer(base_uri: "http://example.com/", prefixes: {
|
42
42
|
# nil => "http://example.com/ns#",
|
43
|
-
# :
|
43
|
+
# foaf: "http://xmlns.com/foaf/0.1/"}
|
44
44
|
# ) do |writer|
|
45
45
|
# graph.each_statement do |statement|
|
46
46
|
# writer << statement
|
@@ -294,7 +294,7 @@ module RDF::N3
|
|
294
294
|
# Defines order of predicates to to emit at begninning of a resource description. Defaults to
|
295
295
|
# [rdf:type, rdfs:label, dc:title]
|
296
296
|
# @return [Array<URI>]
|
297
|
-
def predicate_order; [RDF.type, RDF::RDFS.label, RDF::
|
297
|
+
def predicate_order; [RDF.type, RDF::RDFS.label, RDF::URI("http://purl.org/dc/terms/title")]; end
|
298
298
|
|
299
299
|
# Order subjects for output. Override this to output subjects in another order.
|
300
300
|
#
|
@@ -313,7 +313,7 @@ module RDF::N3
|
|
313
313
|
|
314
314
|
# Add distinguished classes
|
315
315
|
top_classes.each do |class_uri|
|
316
|
-
graph.query(:
|
316
|
+
graph.query(predicate: RDF.type, object: class_uri).map {|st| st.subject}.sort.uniq.each do |subject|
|
317
317
|
add_debug {"order_subjects: #{subject.inspect}"}
|
318
318
|
subjects << subject
|
319
319
|
seen[subject] = true
|
@@ -468,7 +468,7 @@ module RDF::N3
|
|
468
468
|
|
469
469
|
def p_default(node, position)
|
470
470
|
#add_debug {"p_default: #{node.inspect}, #{position}"}
|
471
|
-
l = (position == :subject ? "" : " ") +
|
471
|
+
l = (position == :subject ? "" : " ") + format_term(node, options)
|
472
472
|
@output.write(l)
|
473
473
|
end
|
474
474
|
|
@@ -504,7 +504,7 @@ module RDF::N3
|
|
504
504
|
|
505
505
|
def predicate_list(subject)
|
506
506
|
properties = {}
|
507
|
-
@graph.query(:
|
507
|
+
@graph.query(subject: subject) do |st|
|
508
508
|
properties[st.predicate.to_s] ||= []
|
509
509
|
properties[st.predicate.to_s] << st.object
|
510
510
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-n3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.99.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg
|
@@ -9,19 +9,13 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-10-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rdf
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: '1.1'
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 1.1.17
|
24
|
-
- - "<"
|
25
19
|
- !ruby/object:Gem::Version
|
26
20
|
version: '1.99'
|
27
21
|
type: :runtime
|
@@ -29,12 +23,6 @@ dependencies:
|
|
29
23
|
version_requirements: !ruby/object:Gem::Requirement
|
30
24
|
requirements:
|
31
25
|
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.1'
|
34
|
-
- - ">="
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 1.1.17
|
37
|
-
- - "<"
|
38
26
|
- !ruby/object:Gem::Version
|
39
27
|
version: '1.99'
|
40
28
|
- !ruby/object:Gem::Dependency
|
@@ -62,9 +50,6 @@ dependencies:
|
|
62
50
|
requirement: !ruby/object:Gem::Requirement
|
63
51
|
requirements:
|
64
52
|
- - "~>"
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '1.1'
|
67
|
-
- - "<"
|
68
53
|
- !ruby/object:Gem::Version
|
69
54
|
version: '1.99'
|
70
55
|
type: :development
|
@@ -72,9 +57,6 @@ dependencies:
|
|
72
57
|
version_requirements: !ruby/object:Gem::Requirement
|
73
58
|
requirements:
|
74
59
|
- - "~>"
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '1.1'
|
77
|
-
- - "<"
|
78
60
|
- !ruby/object:Gem::Version
|
79
61
|
version: '1.99'
|
80
62
|
- !ruby/object:Gem::Dependency
|
@@ -83,14 +65,14 @@ dependencies:
|
|
83
65
|
requirements:
|
84
66
|
- - "~>"
|
85
67
|
- !ruby/object:Gem::Version
|
86
|
-
version: '3.
|
68
|
+
version: '3.2'
|
87
69
|
type: :development
|
88
70
|
prerelease: false
|
89
71
|
version_requirements: !ruby/object:Gem::Requirement
|
90
72
|
requirements:
|
91
73
|
- - "~>"
|
92
74
|
- !ruby/object:Gem::Version
|
93
|
-
version: '3.
|
75
|
+
version: '3.2'
|
94
76
|
- !ruby/object:Gem::Dependency
|
95
77
|
name: rspec-its
|
96
78
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,9 +92,6 @@ dependencies:
|
|
110
92
|
requirement: !ruby/object:Gem::Requirement
|
111
93
|
requirements:
|
112
94
|
- - "~>"
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
version: '1.1'
|
115
|
-
- - "<"
|
116
95
|
- !ruby/object:Gem::Version
|
117
96
|
version: '1.99'
|
118
97
|
type: :development
|
@@ -120,9 +99,6 @@ dependencies:
|
|
120
99
|
version_requirements: !ruby/object:Gem::Requirement
|
121
100
|
requirements:
|
122
101
|
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '1.1'
|
125
|
-
- - "<"
|
126
102
|
- !ruby/object:Gem::Version
|
127
103
|
version: '1.99'
|
128
104
|
- !ruby/object:Gem::Dependency
|
@@ -132,9 +108,6 @@ dependencies:
|
|
132
108
|
- - "~>"
|
133
109
|
- !ruby/object:Gem::Version
|
134
110
|
version: '1.1'
|
135
|
-
- - "<"
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
version: '1.99'
|
138
111
|
type: :development
|
139
112
|
prerelease: false
|
140
113
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -142,9 +115,6 @@ dependencies:
|
|
142
115
|
- - "~>"
|
143
116
|
- !ruby/object:Gem::Version
|
144
117
|
version: '1.1'
|
145
|
-
- - "<"
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
version: '1.99'
|
148
118
|
- !ruby/object:Gem::Dependency
|
149
119
|
name: rdf-isomorphic
|
150
120
|
requirement: !ruby/object:Gem::Requirement
|
@@ -152,9 +122,6 @@ dependencies:
|
|
152
122
|
- - "~>"
|
153
123
|
- !ruby/object:Gem::Version
|
154
124
|
version: '1.1'
|
155
|
-
- - "<"
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
version: '1.99'
|
158
125
|
type: :development
|
159
126
|
prerelease: false
|
160
127
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -162,9 +129,6 @@ dependencies:
|
|
162
129
|
- - "~>"
|
163
130
|
- !ruby/object:Gem::Version
|
164
131
|
version: '1.1'
|
165
|
-
- - "<"
|
166
|
-
- !ruby/object:Gem::Version
|
167
|
-
version: '1.99'
|
168
132
|
- !ruby/object:Gem::Dependency
|
169
133
|
name: yard
|
170
134
|
requirement: !ruby/object:Gem::Requirement
|
@@ -211,7 +175,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
211
175
|
requirements:
|
212
176
|
- - ">="
|
213
177
|
- !ruby/object:Gem::Version
|
214
|
-
version: 1.9.
|
178
|
+
version: 1.9.3
|
215
179
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
216
180
|
requirements:
|
217
181
|
- - ">="
|