lightrdf 0.2.6 → 0.3.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/History.txt +5 -0
- data/lib/lightrdf/graph.rb +13 -8
- data/lib/lightrdf/node.rb +11 -12
- data/lib/lightrdf.rb +1 -1
- data/lightrdf.gemspec +2 -2
- data/test/test_lightrdf.rb +64 -2
- metadata +4 -4
data/History.txt
CHANGED
data/lib/lightrdf/graph.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module RDF
|
2
2
|
class Graph < Hash
|
3
3
|
include Parser
|
4
|
+
alias :get :[]
|
4
5
|
|
5
6
|
# Namespace set stored when parsing a file. Can be used for reference
|
6
7
|
attr_accessor :ns
|
@@ -16,24 +17,28 @@ module RDF
|
|
16
17
|
end
|
17
18
|
|
18
19
|
def << node
|
19
|
-
|
20
|
+
node.graph.each do |subid, subnode|
|
21
|
+
subnode.graph = self
|
22
|
+
old_subnode = get(subid)
|
23
|
+
self[subid] = old_subnode ? old_subnode.merge!(subnode) : subnode
|
24
|
+
end
|
25
|
+
old_node = get(node.id)
|
26
|
+
self[node.id] = old_node ? old_node.merge!(node) : node
|
20
27
|
end
|
21
28
|
|
22
29
|
def [] id
|
23
30
|
super(ID(id)) || Node.new(id, self)
|
24
31
|
end
|
25
|
-
def []= id, node
|
26
|
-
node.graph = self
|
27
|
-
super ID(id), node
|
28
|
-
end
|
29
32
|
def nodes; values; end
|
30
33
|
def inspect
|
31
34
|
"{" + (values.map{|v| v.inspect} * ", ") + "}"
|
32
35
|
end
|
36
|
+
def merge! graph
|
37
|
+
graph.values.each { |node| self << node }
|
38
|
+
self
|
39
|
+
end
|
33
40
|
def merge graph
|
34
|
-
|
35
|
-
new_graph.triples = triples + graph.triples
|
36
|
-
new_graph
|
41
|
+
RDF::Graph.new(triples + graph.triples)
|
37
42
|
end
|
38
43
|
def triples
|
39
44
|
triples = []; values.each { |n| triples += n.triples }
|
data/lib/lightrdf/node.rb
CHANGED
@@ -30,7 +30,7 @@ module RDF
|
|
30
30
|
def initialize id=nil, graph=nil
|
31
31
|
@id = ID(id)
|
32
32
|
@graph = graph || Graph.new
|
33
|
-
@graph
|
33
|
+
@graph[@id] = self
|
34
34
|
end
|
35
35
|
|
36
36
|
def method_missing method, *args
|
@@ -66,26 +66,25 @@ module RDF
|
|
66
66
|
triples
|
67
67
|
end
|
68
68
|
|
69
|
-
def all_triples
|
70
|
-
|
71
|
-
done << self
|
72
|
-
triples = self.triples
|
73
|
-
triples.map { |s,p,o| [s,o] }.flatten.uniq.each { |node| triples += graph[node].all_triples(done) }
|
74
|
-
triples
|
69
|
+
def all_triples
|
70
|
+
graph.triples
|
75
71
|
end
|
76
72
|
|
77
73
|
def merge node
|
78
|
-
new_node =
|
74
|
+
new_node = Node(id)
|
79
75
|
(self.keys + node.keys).uniq.each do |k|
|
80
76
|
new_node[k] = (node[k] + self[k]).uniq
|
81
77
|
end
|
82
78
|
new_node
|
83
79
|
end
|
84
|
-
|
85
|
-
def
|
86
|
-
|
80
|
+
|
81
|
+
def merge! node
|
82
|
+
(self.keys + node.keys).uniq.each do |k|
|
83
|
+
self[k] = (node[k] + self[k]).uniq
|
84
|
+
end
|
85
|
+
self
|
87
86
|
end
|
88
|
-
|
87
|
+
|
89
88
|
def bnode?
|
90
89
|
ID.bnode?(id)
|
91
90
|
end
|
data/lib/lightrdf.rb
CHANGED
data/lightrdf.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{lightrdf}
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "0.3.0"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Jose Ignacio"]
|
9
|
-
s.date = %q{2011-03-
|
9
|
+
s.date = %q{2011-03-17}
|
10
10
|
s.default_executable = %q{yarfp}
|
11
11
|
s.description = %q{RDF library}
|
12
12
|
s.email = %q{joseignacio.fernandez@gmail.com}
|
data/test/test_lightrdf.rb
CHANGED
@@ -97,7 +97,67 @@ class TestLightRDF < Test::Unit::TestCase
|
|
97
97
|
assert g[Node('ex:bob')].foaf::weblog?(Node('http://www.awesomeweblogfordummies.com'))
|
98
98
|
assert_equal 1, [g[Node('ex:bob')].graph.object_id, g[Node('ex:bob')].foaf::weblog.map(&:graph).map(&:object_id)].flatten.uniq.size
|
99
99
|
end
|
100
|
+
|
101
|
+
def test_node_merge
|
102
|
+
a = Node('ex:alice')
|
103
|
+
a.foaf::name = "Alice"
|
104
|
+
b = Node('ex:alice')
|
105
|
+
b.foaf::age = "23"
|
106
|
+
|
107
|
+
c = a.merge(b)
|
108
|
+
|
109
|
+
assert_not_same ["Alice"], b.foaf::name
|
110
|
+
assert_not_same ["23"], a.foaf::age
|
111
|
+
assert_equal ["Alice"], c.foaf::name
|
112
|
+
assert_equal ["23"], c.foaf::age
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_node_merge!
|
116
|
+
a = Node('ex:alice')
|
117
|
+
a.foaf::name = "Alice"
|
118
|
+
b = Node('ex:alice')
|
119
|
+
b.foaf::age = "23"
|
120
|
+
|
121
|
+
a.merge!(b)
|
122
|
+
|
123
|
+
assert_equal ["Alice"], a.foaf::name
|
124
|
+
assert_equal ["23"], a.foaf::age
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_recursive_add
|
128
|
+
a = Node('ex:alice')
|
129
|
+
a.foaf::name = "Alice"
|
130
|
+
b = Node("ex:bob", a.graph)
|
131
|
+
b.foaf::age = "26"
|
132
|
+
a.foaf::knows = b
|
133
|
+
|
134
|
+
g = RDF::Graph.new
|
135
|
+
g << a
|
136
|
+
|
137
|
+
assert_equal ["Alice"], g[Node("ex:alice")].foaf::name
|
138
|
+
assert_equal [Node("ex:bob")], g[Node("ex:alice")].foaf::knows
|
139
|
+
assert_equal ["26"], g[Node("ex:bob")].foaf::age
|
140
|
+
end
|
100
141
|
|
142
|
+
def test_graph_merge!
|
143
|
+
a = Node('ex:bob')
|
144
|
+
a.foaf::name = "Bob"
|
145
|
+
|
146
|
+
b = Node('ex:alice')
|
147
|
+
b.foaf::name = "Alice"
|
148
|
+
|
149
|
+
g1 = RDF::Graph.new
|
150
|
+
g2 = RDF::Graph.new
|
151
|
+
g1 << a
|
152
|
+
g2 << b
|
153
|
+
|
154
|
+
g2.merge!(g1)
|
155
|
+
|
156
|
+
assert_equal ["Alice"], g2[Node('ex:alice')].foaf::name
|
157
|
+
assert_equal ["Bob"], g2[Node('ex:bob')].foaf::name
|
158
|
+
assert_equal 2, g2.triples.size
|
159
|
+
end
|
160
|
+
|
101
161
|
def test_graph_merge
|
102
162
|
a = Node('ex:bob')
|
103
163
|
a.foaf::name = "Bob"
|
@@ -112,8 +172,10 @@ class TestLightRDF < Test::Unit::TestCase
|
|
112
172
|
|
113
173
|
g3 = g1.merge(g2)
|
114
174
|
|
115
|
-
|
116
|
-
|
175
|
+
assert_equal ["Alice"], g3[Node('ex:alice')].foaf::name
|
176
|
+
assert_equal ["Bob"], g3[Node('ex:bob')].foaf::name
|
177
|
+
assert_equal g1, a.graph
|
178
|
+
assert_equal g2, b.graph
|
117
179
|
assert_equal 2, g3.triples.size
|
118
180
|
end
|
119
181
|
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 3
|
8
|
+
- 0
|
9
|
+
version: 0.3.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jose Ignacio
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-03-
|
17
|
+
date: 2011-03-17 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|