rdf-json 0.2.0 → 0.3.0.pre
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/CREDITS +0 -0
- data/README +19 -9
- data/VERSION +1 -1
- data/lib/rdf/json.rb +2 -2
- data/lib/rdf/json/extensions.rb +28 -10
- data/lib/rdf/json/format.rb +5 -2
- data/lib/rdf/json/reader.rb +57 -16
- data/lib/rdf/json/version.rb +2 -2
- data/lib/rdf/json/writer.rb +5 -2
- metadata +38 -32
data/CREDITS
ADDED
File without changes
|
data/README
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
RDF/JSON Support for RDF.rb
|
2
2
|
===========================
|
3
3
|
|
4
|
-
This is an [RDF.rb][] plugin that adds support for parsing/serializing
|
5
|
-
[RDF/JSON][] serialization format.
|
4
|
+
This is an [RDF.rb][] plugin that adds support for parsing/serializing
|
5
|
+
[RDF/JSON][], a simple JSON-based RDF serialization format.
|
6
6
|
|
7
7
|
* <http://github.com/bendiken/rdf-json>
|
8
8
|
* <http://blog.datagraph.org/2010/04/parsing-rdf-with-ruby>
|
@@ -19,8 +19,8 @@ Documentation
|
|
19
19
|
Dependencies
|
20
20
|
------------
|
21
21
|
|
22
|
-
* [RDF.rb](http://rubygems.org/gems/rdf) (>= 0.
|
23
|
-
* [JSON](http://rubygems.org/gems/json_pure) (>= 1.4.
|
22
|
+
* [RDF.rb](http://rubygems.org/gems/rdf) (>= 0.3.0)
|
23
|
+
* [JSON](http://rubygems.org/gems/json_pure) (>= 1.4.2)
|
24
24
|
|
25
25
|
Installation
|
26
26
|
------------
|
@@ -37,21 +37,31 @@ To get a local working copy of the development repository, do:
|
|
37
37
|
|
38
38
|
% git clone git://github.com/bendiken/rdf-json.git
|
39
39
|
|
40
|
-
Alternatively,
|
41
|
-
|
40
|
+
Alternatively, download the latest development version as a tarball as
|
41
|
+
follows:
|
42
42
|
|
43
43
|
% wget http://github.com/bendiken/rdf-json/tarball/master
|
44
44
|
|
45
|
+
Mailing List
|
46
|
+
------------
|
47
|
+
|
48
|
+
* <http://lists.w3.org/Archives/Public/public-rdf-ruby/>
|
49
|
+
|
45
50
|
Author
|
46
51
|
------
|
47
52
|
|
48
|
-
* [Arto Bendiken](
|
53
|
+
* [Arto Bendiken](http://github.com/bendiken) - <http://ar.to/>
|
54
|
+
|
55
|
+
Contributors
|
56
|
+
------------
|
57
|
+
|
58
|
+
Refer to the accompanying {file:CREDITS} file.
|
49
59
|
|
50
60
|
License
|
51
61
|
-------
|
52
62
|
|
53
|
-
|
54
|
-
|
63
|
+
This is free and unencumbered public domain software. For more information,
|
64
|
+
see <http://unlicense.org/> or the accompanying {file:UNLICENSE} file.
|
55
65
|
|
56
66
|
[RDF.rb]: http://rdf.rubyforge.org/
|
57
67
|
[RDF/JSON]: http://n2.talis.com/wiki/RDF_JSON_Specification
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0.pre
|
data/lib/rdf/json.rb
CHANGED
data/lib/rdf/json/extensions.rb
CHANGED
@@ -51,7 +51,7 @@ module RDF::JSON
|
|
51
51
|
# Any RDF/JSON-compatible class must implement `#to_rdf_json`:
|
52
52
|
to_rdf_json.to_json
|
53
53
|
end
|
54
|
-
end
|
54
|
+
end # Value
|
55
55
|
|
56
56
|
##
|
57
57
|
# RDF/JSON extensions for `RDF::Node`.
|
@@ -63,7 +63,7 @@ module RDF::JSON
|
|
63
63
|
def to_rdf_json
|
64
64
|
{:type => :bnode, :value => to_s}
|
65
65
|
end
|
66
|
-
end
|
66
|
+
end # Node
|
67
67
|
|
68
68
|
##
|
69
69
|
# RDF/JSON extensions for `RDF::URI`.
|
@@ -75,7 +75,7 @@ module RDF::JSON
|
|
75
75
|
def to_rdf_json
|
76
76
|
{:type => :uri, :value => to_s}
|
77
77
|
end
|
78
|
-
end
|
78
|
+
end # URI
|
79
79
|
|
80
80
|
##
|
81
81
|
# RDF/JSON extensions for `RDF::Literal`.
|
@@ -94,7 +94,7 @@ module RDF::JSON
|
|
94
94
|
{:type => :literal, :value => value.to_s}
|
95
95
|
end
|
96
96
|
end
|
97
|
-
end
|
97
|
+
end # Literal
|
98
98
|
|
99
99
|
##
|
100
100
|
# RDF/JSON extensions for `RDF::Statement`.
|
@@ -106,7 +106,7 @@ module RDF::JSON
|
|
106
106
|
def to_rdf_json
|
107
107
|
{subject.to_s => {predicate.to_s => [object.to_rdf_json]}}
|
108
108
|
end
|
109
|
-
end
|
109
|
+
end # Statement
|
110
110
|
|
111
111
|
##
|
112
112
|
# RDF/JSON extensions for `RDF::Enumerable`.
|
@@ -135,20 +135,38 @@ module RDF::JSON
|
|
135
135
|
end
|
136
136
|
json
|
137
137
|
end
|
138
|
-
end
|
138
|
+
end # Enumerable
|
139
139
|
|
140
140
|
##
|
141
141
|
# RDF/JSON extensions for `RDF::Graph`.
|
142
142
|
module Graph
|
143
143
|
include Enumerable
|
144
|
-
end
|
144
|
+
end # Graph
|
145
145
|
|
146
146
|
##
|
147
147
|
# RDF/JSON extensions for `RDF::Repository`.
|
148
148
|
module Repository
|
149
149
|
include Enumerable
|
150
|
-
end
|
151
|
-
|
150
|
+
end # Repository
|
151
|
+
|
152
|
+
##
|
153
|
+
# RDF/JSON extensions for `RDF::Transaction`.
|
154
|
+
module Transaction
|
155
|
+
##
|
156
|
+
# Returns the serialized JSON representation of this object.
|
157
|
+
#
|
158
|
+
# @return [String]
|
159
|
+
def to_json
|
160
|
+
json = options.dup.to_hash rescue {}
|
161
|
+
json.merge!({
|
162
|
+
:graph => graph ? graph.to_uri.to_s : nil,
|
163
|
+
:delete => deletes.to_rdf_json,
|
164
|
+
:insert => inserts.to_rdf_json,
|
165
|
+
})
|
166
|
+
json.to_json
|
167
|
+
end
|
168
|
+
end # Transaction
|
169
|
+
end # Extensions
|
152
170
|
|
153
171
|
Extensions.install!
|
154
|
-
end #
|
172
|
+
end # RDF::JSON
|
data/lib/rdf/json/format.rb
CHANGED
@@ -2,6 +2,9 @@ module RDF::JSON
|
|
2
2
|
##
|
3
3
|
# RDF/JSON format specification.
|
4
4
|
#
|
5
|
+
# @example Loading RDF/JSON format support
|
6
|
+
# require 'rdf/json'
|
7
|
+
#
|
5
8
|
# @example Obtaining an RDF/JSON format class
|
6
9
|
# RDF::Format.for(:json) #=> RDF::JSON::Format
|
7
10
|
# RDF::Format.for("etc/doap.json")
|
@@ -18,5 +21,5 @@ module RDF::JSON
|
|
18
21
|
writer { RDF::JSON::Writer }
|
19
22
|
|
20
23
|
require 'json'
|
21
|
-
end #
|
22
|
-
end #
|
24
|
+
end # Format
|
25
|
+
end # RDF::JSON
|
data/lib/rdf/json/reader.rb
CHANGED
@@ -2,6 +2,9 @@ module RDF::JSON
|
|
2
2
|
##
|
3
3
|
# RDF/JSON parser.
|
4
4
|
#
|
5
|
+
# @example Loading RDF/JSON parsing support
|
6
|
+
# require 'rdf/json'
|
7
|
+
#
|
5
8
|
# @example Obtaining an RDF/JSON reader class
|
6
9
|
# RDF::Reader.for(:json) #=> RDF::JSON::Reader
|
7
10
|
# RDF::Reader.for("etc/doap.json")
|
@@ -29,6 +32,8 @@ module RDF::JSON
|
|
29
32
|
format RDF::JSON::Format
|
30
33
|
|
31
34
|
##
|
35
|
+
# The graph constructed when parsing.
|
36
|
+
#
|
32
37
|
# @return [RDF::Graph]
|
33
38
|
attr_reader :graph
|
34
39
|
|
@@ -43,7 +48,7 @@ module RDF::JSON
|
|
43
48
|
super do
|
44
49
|
@graph = RDF::Graph.new
|
45
50
|
|
46
|
-
JSON.parse(@input.read).each do |subject, predicates|
|
51
|
+
::JSON.parse(@input.read).each do |subject, predicates|
|
47
52
|
subject = parse_subject(subject)
|
48
53
|
predicates.each do |predicate, objects|
|
49
54
|
predicate = parse_predicate(predicate)
|
@@ -65,8 +70,8 @@ module RDF::JSON
|
|
65
70
|
# @return [RDF::Resource]
|
66
71
|
def parse_subject(subject)
|
67
72
|
case subject
|
68
|
-
when /^_:/ then
|
69
|
-
else
|
73
|
+
when /^_:/ then parse_node(subject)
|
74
|
+
else parse_uri(subject)
|
70
75
|
end
|
71
76
|
end
|
72
77
|
|
@@ -76,8 +81,8 @@ module RDF::JSON
|
|
76
81
|
# @param [String] predicate
|
77
82
|
# @return [RDF::URI]
|
78
83
|
def parse_predicate(predicate)
|
79
|
-
# TODO: optional support for CURIE predicates (issue #1 on GitHub).
|
80
|
-
|
84
|
+
# TODO: optional support for CURIE predicates? (issue #1 on GitHub).
|
85
|
+
parse_uri(predicate, :intern => true)
|
81
86
|
end
|
82
87
|
|
83
88
|
##
|
@@ -86,44 +91,80 @@ module RDF::JSON
|
|
86
91
|
# @param [Hash{String => Object}] object
|
87
92
|
# @return [RDF::Value]
|
88
93
|
def parse_object(object)
|
89
|
-
raise RDF::ReaderError
|
90
|
-
raise RDF::ReaderError
|
94
|
+
raise RDF::ReaderError, "missing 'type' key in #{object.inspect}" unless object.has_key?('type')
|
95
|
+
raise RDF::ReaderError, "missing 'value' key in #{object.inspect}" unless object.has_key?('value')
|
91
96
|
|
92
97
|
case type = object['type']
|
93
98
|
when 'bnode'
|
94
|
-
|
99
|
+
parse_node(object['value'])
|
95
100
|
when 'uri'
|
96
|
-
|
101
|
+
parse_uri(object['value'])
|
97
102
|
when 'literal'
|
98
|
-
RDF::Literal.new(object['value'], {
|
103
|
+
literal = RDF::Literal.new(object['value'], {
|
99
104
|
:language => object['lang'],
|
100
105
|
:datatype => object['datatype'],
|
101
106
|
})
|
107
|
+
literal.validate! if validate?
|
108
|
+
literal.canonicalize! if canonicalize?
|
109
|
+
literal
|
102
110
|
else
|
103
111
|
raise RDF::ReaderError, "expected 'type' to be 'bnode', 'uri', or 'literal', but got #{type.inspect}"
|
104
112
|
end
|
105
113
|
end
|
106
114
|
|
115
|
+
##
|
116
|
+
# Parses an RDF/JSON blank node string into an `RDF::Node` instance.
|
117
|
+
#
|
118
|
+
# @param [String] string
|
119
|
+
# @return [RDF::Node]
|
120
|
+
def parse_node(string)
|
121
|
+
RDF::Node.new(string[2..-1]) # strips off the initial '_:'
|
122
|
+
end
|
123
|
+
alias_method :parse_bnode, :parse_node
|
124
|
+
|
125
|
+
##
|
126
|
+
# Parses an RDF/JSON URI string into an `RDF::URI` instance.
|
127
|
+
#
|
128
|
+
# @param [String] string
|
129
|
+
# @param [Hash{Symbol => Object}] options
|
130
|
+
# @option options [Boolean] :intern (false)
|
131
|
+
# @return [RDF::URI]
|
132
|
+
def parse_uri(string, options = {})
|
133
|
+
uri = RDF::URI.send(intern = intern? && options[:intern] ? :intern : :new, string)
|
134
|
+
uri.validate! if validate?
|
135
|
+
uri.canonicalize! if canonicalize? && !intern
|
136
|
+
uri
|
137
|
+
end
|
138
|
+
|
107
139
|
##
|
108
140
|
# @private
|
109
141
|
# @see RDF::Reader#each_graph
|
110
142
|
# @since 0.2.0
|
111
143
|
def each_graph(&block)
|
112
|
-
block_given?
|
144
|
+
if block_given?
|
145
|
+
block.call(@graph)
|
146
|
+
end
|
147
|
+
enum_graph
|
113
148
|
end
|
114
149
|
|
115
150
|
##
|
116
151
|
# @private
|
117
152
|
# @see RDF::Reader#each_statement
|
118
153
|
def each_statement(&block)
|
119
|
-
block_given?
|
154
|
+
if block_given?
|
155
|
+
@graph.each_statement(&block)
|
156
|
+
end
|
157
|
+
enum_statement
|
120
158
|
end
|
121
159
|
|
122
160
|
##
|
123
161
|
# @private
|
124
|
-
# @see RDF::Reader#
|
162
|
+
# @see RDF::Reader#each_triple
|
125
163
|
def each_triple(&block)
|
126
|
-
block_given?
|
164
|
+
if block_given?
|
165
|
+
@graph.each_triple(&block)
|
166
|
+
end
|
167
|
+
enum_triple
|
127
168
|
end
|
128
|
-
end #
|
129
|
-
end #
|
169
|
+
end # Reader
|
170
|
+
end # RDF::JSON
|
data/lib/rdf/json/version.rb
CHANGED
data/lib/rdf/json/writer.rb
CHANGED
@@ -2,6 +2,9 @@ module RDF::JSON
|
|
2
2
|
##
|
3
3
|
# RDF/JSON serializer.
|
4
4
|
#
|
5
|
+
# @example Loading RDF/JSON serialization support
|
6
|
+
# require 'rdf/json'
|
7
|
+
#
|
5
8
|
# @example Obtaining an RDF/JSON writer class
|
6
9
|
# RDF::Writer.for(:json) #=> RDF::JSON::Writer
|
7
10
|
# RDF::Writer.for("etc/test.json")
|
@@ -86,5 +89,5 @@ module RDF::JSON
|
|
86
89
|
else RDF::Literal.new(value).to_json
|
87
90
|
end
|
88
91
|
end
|
89
|
-
end #
|
90
|
-
end #
|
92
|
+
end # Writer
|
93
|
+
end # RDF::JSON
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
4
|
+
prerelease: true
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 3
|
8
8
|
- 0
|
9
|
-
|
9
|
+
- pre
|
10
|
+
version: 0.3.0.pre
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Arto Bendiken
|
@@ -14,36 +15,37 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-11-19 00:00:00 +01:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
|
-
name:
|
22
|
+
name: json_pure
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
25
|
requirements:
|
25
|
-
- -
|
26
|
+
- - ">="
|
26
27
|
- !ruby/object:Gem::Version
|
27
28
|
segments:
|
28
|
-
-
|
29
|
+
- 1
|
30
|
+
- 4
|
29
31
|
- 2
|
30
|
-
|
31
|
-
|
32
|
-
type: :development
|
32
|
+
version: 1.4.2
|
33
|
+
type: :runtime
|
33
34
|
version_requirements: *id001
|
34
35
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
36
|
+
name: rdf
|
36
37
|
prerelease: false
|
37
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
39
|
requirements:
|
39
|
-
- - "
|
40
|
+
- - "="
|
40
41
|
- !ruby/object:Gem::Version
|
41
42
|
segments:
|
42
|
-
-
|
43
|
+
- 0
|
43
44
|
- 3
|
44
45
|
- 0
|
45
|
-
|
46
|
-
|
46
|
+
- pre
|
47
|
+
version: 0.3.0.pre
|
48
|
+
type: :runtime
|
47
49
|
version_requirements: *id002
|
48
50
|
- !ruby/object:Gem::Dependency
|
49
51
|
name: yard
|
@@ -54,38 +56,39 @@ dependencies:
|
|
54
56
|
- !ruby/object:Gem::Version
|
55
57
|
segments:
|
56
58
|
- 0
|
57
|
-
- 5
|
58
59
|
- 6
|
59
|
-
|
60
|
+
- 0
|
61
|
+
version: 0.6.0
|
60
62
|
type: :development
|
61
63
|
version_requirements: *id003
|
62
64
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
65
|
+
name: rspec
|
64
66
|
prerelease: false
|
65
67
|
requirement: &id004 !ruby/object:Gem::Requirement
|
66
68
|
requirements:
|
67
|
-
- -
|
69
|
+
- - ">="
|
68
70
|
- !ruby/object:Gem::Version
|
69
71
|
segments:
|
72
|
+
- 1
|
73
|
+
- 3
|
70
74
|
- 0
|
71
|
-
|
72
|
-
|
73
|
-
version: 0.2.0
|
74
|
-
type: :runtime
|
75
|
+
version: 1.3.0
|
76
|
+
type: :development
|
75
77
|
version_requirements: *id004
|
76
78
|
- !ruby/object:Gem::Dependency
|
77
|
-
name:
|
79
|
+
name: rdf-spec
|
78
80
|
prerelease: false
|
79
81
|
requirement: &id005 !ruby/object:Gem::Requirement
|
80
82
|
requirements:
|
81
|
-
- -
|
83
|
+
- - "="
|
82
84
|
- !ruby/object:Gem::Version
|
83
85
|
segments:
|
84
|
-
-
|
85
|
-
- 4
|
86
|
+
- 0
|
86
87
|
- 3
|
87
|
-
|
88
|
-
|
88
|
+
- 0
|
89
|
+
- pre
|
90
|
+
version: 0.3.0.pre
|
91
|
+
type: :development
|
89
92
|
version_requirements: *id005
|
90
93
|
description: RDF.rb plugin for parsing/serializing RDF/JSON data.
|
91
94
|
email: public-rdf-ruby@w3.org
|
@@ -97,6 +100,7 @@ extra_rdoc_files: []
|
|
97
100
|
|
98
101
|
files:
|
99
102
|
- AUTHORS
|
103
|
+
- CREDITS
|
100
104
|
- README
|
101
105
|
- UNLICENSE
|
102
106
|
- VERSION
|
@@ -127,11 +131,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
127
131
|
version: 1.8.1
|
128
132
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
133
|
requirements:
|
130
|
-
- - "
|
134
|
+
- - ">"
|
131
135
|
- !ruby/object:Gem::Version
|
132
136
|
segments:
|
133
|
-
-
|
134
|
-
|
137
|
+
- 1
|
138
|
+
- 3
|
139
|
+
- 1
|
140
|
+
version: 1.3.1
|
135
141
|
requirements: []
|
136
142
|
|
137
143
|
rubyforge_project: rdf
|