rdf-json 0.0.2 → 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/README +3 -3
- data/VERSION +1 -1
- data/etc/doap.json +141 -0
- data/lib/rdf/json.rb +2 -2
- data/lib/rdf/json/format.rb +2 -2
- data/lib/rdf/json/reader.rb +101 -5
- data/lib/rdf/json/version.rb +2 -2
- data/lib/rdf/json/writer.rb +3 -3
- metadata +58 -28
data/README
CHANGED
@@ -18,14 +18,14 @@ Documentation
|
|
18
18
|
Dependencies
|
19
19
|
------------
|
20
20
|
|
21
|
-
* [RDF.rb](http://
|
22
|
-
* [JSON](http://
|
21
|
+
* [RDF.rb](http://rubygems.org/gems/rdf) (>= 0.1.0)
|
22
|
+
* [JSON](http://rubygems.org/gems/json_pure) (>= 1.2.3)
|
23
23
|
|
24
24
|
Installation
|
25
25
|
------------
|
26
26
|
|
27
27
|
The recommended installation method is via RubyGems. To install the latest
|
28
|
-
official release
|
28
|
+
official release, do:
|
29
29
|
|
30
30
|
% [sudo] gem install rdf-json
|
31
31
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/etc/doap.json
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
|
2
|
+
{
|
3
|
+
"http://ar.to/#self" : {
|
4
|
+
"http://www.w3.org/1999/02/22-rdf-syntax-ns#type" : [ {
|
5
|
+
"value" : "http://xmlns.com/foaf/0.1/Person",
|
6
|
+
"type" : "uri"
|
7
|
+
}
|
8
|
+
|
9
|
+
],
|
10
|
+
"http://www.w3.org/2000/01/rdf-schema#seeAlso" : [ {
|
11
|
+
"value" : "http://datagraph.org/bendiken/foaf",
|
12
|
+
"type" : "uri"
|
13
|
+
}
|
14
|
+
|
15
|
+
],
|
16
|
+
"http://xmlns.com/foaf/0.1/made" : [ {
|
17
|
+
"value" : "http://rubygems.org/gems/rdf-json",
|
18
|
+
"type" : "uri"
|
19
|
+
}
|
20
|
+
|
21
|
+
],
|
22
|
+
"http://xmlns.com/foaf/0.1/mbox" : [ {
|
23
|
+
"value" : "mailto:arto.bendiken@gmail.com",
|
24
|
+
"type" : "uri"
|
25
|
+
}
|
26
|
+
|
27
|
+
],
|
28
|
+
"http://xmlns.com/foaf/0.1/name" : [ {
|
29
|
+
"value" : "Arto Bendiken",
|
30
|
+
"type" : "literal"
|
31
|
+
}
|
32
|
+
|
33
|
+
]
|
34
|
+
}
|
35
|
+
,
|
36
|
+
"http://rubygems.org/gems/rdf-json" : {
|
37
|
+
"http://purl.org/dc/terms/creator" : [ {
|
38
|
+
"value" : "http://ar.to/#self",
|
39
|
+
"type" : "uri"
|
40
|
+
}
|
41
|
+
|
42
|
+
],
|
43
|
+
"http://usefulinc.com/ns/doap#blog" : [ {
|
44
|
+
"value" : "http://ar.to/",
|
45
|
+
"type" : "uri"
|
46
|
+
}
|
47
|
+
,
|
48
|
+
{
|
49
|
+
"value" : "http://blog.datagraph.org/",
|
50
|
+
"type" : "uri"
|
51
|
+
}
|
52
|
+
|
53
|
+
],
|
54
|
+
"http://usefulinc.com/ns/doap#bug-database" : [ {
|
55
|
+
"value" : "http://github.com/bendiken/rdf-json/issues",
|
56
|
+
"type" : "uri"
|
57
|
+
}
|
58
|
+
|
59
|
+
],
|
60
|
+
"http://usefulinc.com/ns/doap#created" : [ {
|
61
|
+
"value" : "2009-12-28",
|
62
|
+
"type" : "literal"
|
63
|
+
}
|
64
|
+
|
65
|
+
],
|
66
|
+
"http://usefulinc.com/ns/doap#description" : [ {
|
67
|
+
"value" : "RDF.rb plugin for parsing/serializing RDF/JSON data.",
|
68
|
+
"lang" : "en",
|
69
|
+
"type" : "literal"
|
70
|
+
}
|
71
|
+
|
72
|
+
],
|
73
|
+
"http://usefulinc.com/ns/doap#developer" : [ {
|
74
|
+
"value" : "http://ar.to/#self",
|
75
|
+
"type" : "uri"
|
76
|
+
}
|
77
|
+
|
78
|
+
],
|
79
|
+
"http://usefulinc.com/ns/doap#documenter" : [ {
|
80
|
+
"value" : "http://ar.to/#self",
|
81
|
+
"type" : "uri"
|
82
|
+
}
|
83
|
+
|
84
|
+
],
|
85
|
+
"http://usefulinc.com/ns/doap#download-page" : [ {
|
86
|
+
"value" : "http://rubyforge.org/projects/rdf/",
|
87
|
+
"type" : "uri"
|
88
|
+
}
|
89
|
+
|
90
|
+
],
|
91
|
+
"http://usefulinc.com/ns/doap#homepage" : [ {
|
92
|
+
"value" : "http://rdf.rubyforge.org/json/",
|
93
|
+
"type" : "uri"
|
94
|
+
}
|
95
|
+
|
96
|
+
],
|
97
|
+
"http://usefulinc.com/ns/doap#license" : [ {
|
98
|
+
"value" : "http://creativecommons.org/licenses/publicdomain/",
|
99
|
+
"type" : "uri"
|
100
|
+
}
|
101
|
+
|
102
|
+
],
|
103
|
+
"http://usefulinc.com/ns/doap#maintainer" : [ {
|
104
|
+
"value" : "http://ar.to/#self",
|
105
|
+
"type" : "uri"
|
106
|
+
}
|
107
|
+
|
108
|
+
],
|
109
|
+
"http://usefulinc.com/ns/doap#name" : [ {
|
110
|
+
"value" : "RDF::JSON",
|
111
|
+
"type" : "literal"
|
112
|
+
}
|
113
|
+
|
114
|
+
],
|
115
|
+
"http://usefulinc.com/ns/doap#platform" : [ {
|
116
|
+
"value" : "Ruby",
|
117
|
+
"type" : "literal"
|
118
|
+
}
|
119
|
+
|
120
|
+
],
|
121
|
+
"http://usefulinc.com/ns/doap#shortdesc" : [ {
|
122
|
+
"value" : "RDF/JSON support for RDF.rb.",
|
123
|
+
"lang" : "en",
|
124
|
+
"type" : "literal"
|
125
|
+
}
|
126
|
+
|
127
|
+
],
|
128
|
+
"http://www.w3.org/1999/02/22-rdf-syntax-ns#type" : [ {
|
129
|
+
"value" : "http://usefulinc.com/ns/doap#Project",
|
130
|
+
"type" : "uri"
|
131
|
+
}
|
132
|
+
|
133
|
+
],
|
134
|
+
"http://xmlns.com/foaf/0.1/maker" : [ {
|
135
|
+
"value" : "http://ar.to/#self",
|
136
|
+
"type" : "uri"
|
137
|
+
}
|
138
|
+
|
139
|
+
]
|
140
|
+
}
|
141
|
+
}
|
data/lib/rdf/json.rb
CHANGED
@@ -8,14 +8,14 @@ module RDF
|
|
8
8
|
# require 'rdf/json'
|
9
9
|
#
|
10
10
|
# @example Parsing RDF statements from an RDF/JSON file
|
11
|
-
# RDF::JSON::Reader.open("
|
11
|
+
# RDF::JSON::Reader.open("etc/doap.json") do |reader|
|
12
12
|
# reader.each_statement do |statement|
|
13
13
|
# puts statement.inspect
|
14
14
|
# end
|
15
15
|
# end
|
16
16
|
#
|
17
17
|
# @example Serializing RDF statements into an RDF/JSON file
|
18
|
-
# RDF::JSON::Writer.open("
|
18
|
+
# RDF::JSON::Writer.open("etc/test.json") do |writer|
|
19
19
|
# graph.each_statement do |statement|
|
20
20
|
# writer << statement
|
21
21
|
# end
|
data/lib/rdf/json/format.rb
CHANGED
@@ -4,8 +4,8 @@ module RDF::JSON
|
|
4
4
|
#
|
5
5
|
# @example Obtaining an RDF/JSON format class
|
6
6
|
# RDF::Format.for(:json) #=> RDF::JSON::Format
|
7
|
-
# RDF::Format.for("
|
8
|
-
# RDF::Format.for(:file_name => "
|
7
|
+
# RDF::Format.for("etc/doap.json")
|
8
|
+
# RDF::Format.for(:file_name => "etc/doap.json")
|
9
9
|
# RDF::Format.for(:file_extension => "json")
|
10
10
|
# RDF::Format.for(:content_type => "application/json")
|
11
11
|
#
|
data/lib/rdf/json/reader.rb
CHANGED
@@ -4,20 +4,20 @@ module RDF::JSON
|
|
4
4
|
#
|
5
5
|
# @example Obtaining an RDF/JSON reader class
|
6
6
|
# RDF::Reader.for(:json) #=> RDF::JSON::Reader
|
7
|
-
# RDF::Reader.for("
|
8
|
-
# RDF::Reader.for(:file_name => "
|
7
|
+
# RDF::Reader.for("etc/doap.json")
|
8
|
+
# RDF::Reader.for(:file_name => "etc/doap.json")
|
9
9
|
# RDF::Reader.for(:file_extension => "json")
|
10
10
|
# RDF::Reader.for(:content_type => "application/json")
|
11
11
|
#
|
12
12
|
# @example Parsing RDF statements from an RDF/JSON file
|
13
|
-
# RDF::JSON::Reader.open("
|
13
|
+
# RDF::JSON::Reader.open("etc/doap.json") do |reader|
|
14
14
|
# reader.each_statement do |statement|
|
15
15
|
# puts statement.inspect
|
16
16
|
# end
|
17
17
|
# end
|
18
18
|
#
|
19
19
|
# @example Parsing RDF statements from an RDF/JSON string
|
20
|
-
# data = StringIO.new(File.read("
|
20
|
+
# data = StringIO.new(File.read("etc/doap.json"))
|
21
21
|
# RDF::JSON::Reader.new(data) do |reader|
|
22
22
|
# reader.each_statement do |statement|
|
23
23
|
# puts statement.inspect
|
@@ -28,6 +28,102 @@ module RDF::JSON
|
|
28
28
|
class Reader < RDF::Reader
|
29
29
|
format RDF::JSON::Format
|
30
30
|
|
31
|
-
|
31
|
+
##
|
32
|
+
# @return [RDF::Graph]
|
33
|
+
attr_reader :graph
|
34
|
+
|
35
|
+
##
|
36
|
+
# Initializes the RDF/JSON reader instance.
|
37
|
+
#
|
38
|
+
# @param [IO, File, String] input
|
39
|
+
# @param [Hash{Symbol => Object}] options
|
40
|
+
# @yield [reader]
|
41
|
+
# @yieldparam [Reader] reader
|
42
|
+
def initialize(input = $stdin, options = {}, &block)
|
43
|
+
super do
|
44
|
+
@graph = RDF::Graph.new
|
45
|
+
|
46
|
+
JSON.parse(@input.read).each do |subject, predicates|
|
47
|
+
subject = parse_subject(subject)
|
48
|
+
predicates.each do |predicate, objects|
|
49
|
+
predicate = parse_predicate(predicate)
|
50
|
+
objects.each do |object|
|
51
|
+
object = parse_object(object)
|
52
|
+
@graph << [subject, predicate, object]
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
block.call(self) if block_given?
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
##
|
62
|
+
# Parses an RDF/JSON subject string into a URI reference or blank node.
|
63
|
+
#
|
64
|
+
# @param [String] subject
|
65
|
+
# @return [RDF::Resource]
|
66
|
+
def parse_subject(subject)
|
67
|
+
case subject
|
68
|
+
when /^_:/ then RDF::Node.new(subject[2..-1])
|
69
|
+
else RDF::URI.new(subject)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
##
|
74
|
+
# Parses an RDF/JSON predicate string into a URI reference.
|
75
|
+
#
|
76
|
+
# @param [String] predicate
|
77
|
+
# @return [RDF::URI]
|
78
|
+
def parse_predicate(predicate)
|
79
|
+
# TODO: support for CURIE predicates (issue #1 on GitHub).
|
80
|
+
parse_subject(predicate)
|
81
|
+
end
|
82
|
+
|
83
|
+
##
|
84
|
+
# Parses an RDF/JSON object string into an RDF value.
|
85
|
+
#
|
86
|
+
# @param [Hash{String => Object}] object
|
87
|
+
# @return [RDF::Value]
|
88
|
+
def parse_object(object)
|
89
|
+
raise RDF::ReaderError.new, "missing 'type' key in #{object.inspect}" unless object.has_key?('type')
|
90
|
+
raise RDF::ReaderError.new, "missing 'value' key in #{object.inspect}" unless object.has_key?('value')
|
91
|
+
|
92
|
+
case type = object['type']
|
93
|
+
when 'bnode'
|
94
|
+
RDF::Node.new(object['value'][2..-1])
|
95
|
+
when 'uri'
|
96
|
+
RDF::URI.new(object['value'])
|
97
|
+
when 'literal'
|
98
|
+
RDF::Literal.new(object['value'], {
|
99
|
+
:language => object['lang'],
|
100
|
+
:datatype => object['datatype'],
|
101
|
+
})
|
102
|
+
else
|
103
|
+
raise RDF::ReaderError, "expected 'type' to be 'bnode', 'uri', or 'literal', but got #{type.inspect}"
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
##
|
108
|
+
# Iterates the given block for each RDF statement in the input.
|
109
|
+
#
|
110
|
+
# @yield [statement]
|
111
|
+
# @yieldparam [RDF::Statement] statement
|
112
|
+
# @return [void]
|
113
|
+
def each_statement(&block)
|
114
|
+
@graph.each_statement(&block)
|
115
|
+
end
|
116
|
+
|
117
|
+
##
|
118
|
+
# Iterates the given block for each RDF triple in the input.
|
119
|
+
#
|
120
|
+
# @yield [subject, predicate, object]
|
121
|
+
# @yieldparam [RDF::Resource] subject
|
122
|
+
# @yieldparam [RDF::URI] predicate
|
123
|
+
# @yieldparam [RDF::Value] object
|
124
|
+
# @return [void]
|
125
|
+
def each_triple(&block)
|
126
|
+
@graph.each_triple(&block)
|
127
|
+
end
|
32
128
|
end # class Reader
|
33
129
|
end # module RDF::JSON
|
data/lib/rdf/json/version.rb
CHANGED
data/lib/rdf/json/writer.rb
CHANGED
@@ -4,13 +4,13 @@ module RDF::JSON
|
|
4
4
|
#
|
5
5
|
# @example Obtaining an RDF/JSON writer class
|
6
6
|
# RDF::Writer.for(:json) #=> RDF::JSON::Writer
|
7
|
-
# RDF::Writer.for("
|
8
|
-
# RDF::Writer.for(:file_name => "
|
7
|
+
# RDF::Writer.for("etc/test.json")
|
8
|
+
# RDF::Writer.for(:file_name => "etc/test.json")
|
9
9
|
# RDF::Writer.for(:file_extension => "json")
|
10
10
|
# RDF::Writer.for(:content_type => "application/json")
|
11
11
|
#
|
12
12
|
# @example Serializing RDF statements into an RDF/JSON file
|
13
|
-
# RDF::JSON::Writer.open("
|
13
|
+
# RDF::JSON::Writer.open("etc/test.json") do |writer|
|
14
14
|
# graph.each_statement do |statement|
|
15
15
|
# writer << statement
|
16
16
|
# end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Arto Bendiken
|
@@ -9,59 +14,79 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-03-11 00:00:00 +01:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: rdf-spec
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
- 1
|
30
|
+
- 0
|
31
|
+
version: 0.1.0
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
25
34
|
- !ruby/object:Gem::Dependency
|
26
35
|
name: rspec
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
38
|
requirements:
|
31
39
|
- - ">="
|
32
40
|
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 1
|
43
|
+
- 3
|
44
|
+
- 0
|
33
45
|
version: 1.3.0
|
34
|
-
|
46
|
+
type: :development
|
47
|
+
version_requirements: *id002
|
35
48
|
- !ruby/object:Gem::Dependency
|
36
49
|
name: yard
|
37
|
-
|
38
|
-
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
52
|
requirements:
|
41
53
|
- - ">="
|
42
54
|
- !ruby/object:Gem::Version
|
55
|
+
segments:
|
56
|
+
- 0
|
57
|
+
- 5
|
58
|
+
- 3
|
43
59
|
version: 0.5.3
|
44
|
-
|
60
|
+
type: :development
|
61
|
+
version_requirements: *id003
|
45
62
|
- !ruby/object:Gem::Dependency
|
46
63
|
name: rdf
|
47
|
-
|
48
|
-
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
prerelease: false
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
66
|
requirements:
|
51
67
|
- - ">="
|
52
68
|
- !ruby/object:Gem::Version
|
53
|
-
|
54
|
-
|
69
|
+
segments:
|
70
|
+
- 0
|
71
|
+
- 1
|
72
|
+
- 0
|
73
|
+
version: 0.1.0
|
74
|
+
type: :runtime
|
75
|
+
version_requirements: *id004
|
55
76
|
- !ruby/object:Gem::Dependency
|
56
77
|
name: json_pure
|
57
|
-
|
58
|
-
|
59
|
-
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
prerelease: false
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
60
80
|
requirements:
|
61
81
|
- - ">="
|
62
82
|
- !ruby/object:Gem::Version
|
63
|
-
|
64
|
-
|
83
|
+
segments:
|
84
|
+
- 1
|
85
|
+
- 2
|
86
|
+
- 3
|
87
|
+
version: 1.2.3
|
88
|
+
type: :runtime
|
89
|
+
version_requirements: *id005
|
65
90
|
description: RDF.rb plugin for parsing/serializing RDF/JSON data.
|
66
91
|
email: arto.bendiken@gmail.com
|
67
92
|
executables: []
|
@@ -75,6 +100,7 @@ files:
|
|
75
100
|
- README
|
76
101
|
- UNLICENSE
|
77
102
|
- VERSION
|
103
|
+
- etc/doap.json
|
78
104
|
- lib/rdf/json/extensions.rb
|
79
105
|
- lib/rdf/json/format.rb
|
80
106
|
- lib/rdf/json/reader.rb
|
@@ -94,18 +120,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
120
|
requirements:
|
95
121
|
- - ">="
|
96
122
|
- !ruby/object:Gem::Version
|
123
|
+
segments:
|
124
|
+
- 1
|
125
|
+
- 8
|
126
|
+
- 2
|
97
127
|
version: 1.8.2
|
98
|
-
version:
|
99
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
129
|
requirements:
|
101
130
|
- - ">="
|
102
131
|
- !ruby/object:Gem::Version
|
132
|
+
segments:
|
133
|
+
- 0
|
103
134
|
version: "0"
|
104
|
-
version:
|
105
135
|
requirements: []
|
106
136
|
|
107
137
|
rubyforge_project: rdf
|
108
|
-
rubygems_version: 1.3.
|
138
|
+
rubygems_version: 1.3.6
|
109
139
|
signing_key:
|
110
140
|
specification_version: 3
|
111
141
|
summary: RDF/JSON support for RDF.rb.
|