lightrdf 0.3.7 → 0.3.8

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 0.3.8 2011-04-04
2
+
3
+ * Added renaming of nodes and graph and node cloning
4
+
1
5
  === 0.3.7 2011-03-25
2
6
 
3
7
  * Fix in YARF serialization that avoids including empty predicates
@@ -93,6 +93,17 @@ module RDF
93
93
  end
94
94
  end
95
95
 
96
+ def clone
97
+ graph = self.class.new
98
+ each do |id, node|
99
+ new_node = graph[id]
100
+ node.each do |predicate, objects|
101
+ new_node[predicate] = objects.map { |object| object.is_a?(Node) ? graph[object] : object }
102
+ end
103
+ end
104
+ graph
105
+ end
106
+
96
107
  def find subject, predicate, object
97
108
  # Convert nodes into IDs
98
109
  subject = subject.id if subject.is_a?(Node)
data/lib/lightrdf/node.rb CHANGED
@@ -88,6 +88,21 @@ module RDF
88
88
  end
89
89
  self
90
90
  end
91
+
92
+ def rename new_id=nil
93
+ clone.rename! new_id
94
+ end
95
+
96
+ def rename! new_id=nil
97
+ self.graph.delete id
98
+ self.id = ID(new_id)
99
+ self.graph[id] = self
100
+ self
101
+ end
102
+
103
+ def clone
104
+ self.graph.clone[id]
105
+ end
91
106
 
92
107
  def bnode?
93
108
  ID.bnode?(id)
@@ -58,6 +58,11 @@ module RDF
58
58
  @node.id
59
59
  end
60
60
 
61
+ # clone method delegated to node
62
+ def clone
63
+ node.clone.proxy(rdf_type)
64
+ end
65
+
61
66
  def rdf_type
62
67
  self.class.instance_variable_get("@rdf_type")
63
68
  end
data/lib/lightrdf.rb CHANGED
@@ -2,7 +2,7 @@ $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
3
 
4
4
  module RDF
5
- VERSION = '0.3.7'
5
+ VERSION = '0.3.8'
6
6
  end
7
7
 
8
8
  require 'rubygems'
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.3.7"
5
+ s.version = "0.3.8"
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-25}
9
+ s.date = %q{2011-04-04}
10
10
  s.default_executable = %q{yarfp}
11
11
  s.description = %q{RDF library}
12
12
  s.email = %q{joseignacio.fernandez@gmail.com}
@@ -1,24 +1,24 @@
1
1
  require File.dirname(__FILE__) + '/test_helper.rb'
2
2
 
3
3
  Namespace :ex, 'http://www.example.com/ontology#'
4
- Namespace :foaf, 'http://xmlns.com/foaf/0.1/'
5
-
6
- module Foaf
7
- class Person
8
- include RDF::NodeProxy
9
-
10
- # Adds 1 year to the person's age
11
- def happy_birthday!
12
- foaf::age = (foaf::age.first.to_i + 1).to_s
13
- end
14
- end
4
+ Namespace :foaf, 'http://xmlns.com/foaf/0.1/'
5
+
6
+ module Foaf
7
+ class Person
8
+ include RDF::NodeProxy
9
+
10
+ # Adds 1 year to the person's age
11
+ def happy_birthday!
12
+ foaf::age = (foaf::age.first.to_i + 1).to_s
13
+ end
14
+ end
15
15
  end
16
16
 
17
- module Foaf
17
+ module Foaf
18
18
  class Thing
19
- include RDF::NodeProxy
20
- maps 'http://xmlns.com/foaf/0.1/Agent'
21
- end
19
+ include RDF::NodeProxy
20
+ maps 'http://xmlns.com/foaf/0.1/Agent'
21
+ end
22
22
  end
23
23
 
24
24
  class TestLightRDF < Test::Unit::TestCase
@@ -98,6 +98,37 @@ class TestLightRDF < Test::Unit::TestCase
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
100
 
101
+ def test_rename
102
+ a = Node('ex:alice')
103
+ a.foaf::name = "Alice"
104
+ b = Node('ex:bob')
105
+ b.foaf::knows = a
106
+ a.graph << b
107
+ a.foaf::knows = b
108
+
109
+ c = a.rename 'ex:ana'
110
+
111
+ assert a.graph['ex:alice'].foaf::knows.include?(Node('ex:bob'))
112
+ assert a.foaf::knows.first.foaf::knows.include?(Node('ex:alice'))
113
+
114
+ assert c.graph['ex:ana'].foaf::knows.include?(Node('ex:bob'))
115
+ assert c.foaf::knows.first.foaf::knows.include?(Node('ex:ana'))
116
+ end
117
+
118
+ def test_rename!
119
+ a = Node('ex:alice')
120
+ a.foaf::name = "Alice"
121
+ b = Node('ex:bob')
122
+ b.foaf::knows = a
123
+ a.graph << b
124
+ a.foaf::knows = b
125
+
126
+ a.rename! 'ex:ana'
127
+
128
+ assert a.graph['ex:ana'].foaf::knows.include?(Node('ex:bob'))
129
+ assert a.foaf::knows.first.foaf::knows.include?(Node('ex:ana'))
130
+ end
131
+
101
132
  def test_node_merge
102
133
  a = Node('ex:alice')
103
134
  a.foaf::name = "Alice"
@@ -249,9 +280,9 @@ foaf: http://xmlns.com/foaf/0.1/
249
280
 
250
281
  def test_repository
251
282
  repository = RDF::Repository.new
252
- triple = [ID("http://testuri.org"), ID('rdf:type'), ID('rdf:Class')]
253
- graph = RDF::Graph.new [triple]
254
- context = "http://test_context.org"
283
+ triple = [ID("http://testuri.org"), ID('rdf:type'), ID('rdf:Class')]
284
+ graph = RDF::Graph.new [triple]
285
+ context = "http://test_context.org"
255
286
  repository.data = graph, context
256
287
 
257
288
  # Check if the added data is there
@@ -264,10 +295,10 @@ foaf: http://xmlns.com/foaf/0.1/
264
295
  end
265
296
 
266
297
  def test_repository_contexts
267
- repository = RDF::Repository.new
268
- graph = RDF::Graph.new [[Node("http://testuri.org"), Node('rdf:type'), Node('rdf:Class')]]
269
- context = "http://test_repository_contexts.org"
270
- repository.data = graph, context
298
+ repository = RDF::Repository.new
299
+ graph = RDF::Graph.new [[Node("http://testuri.org"), Node('rdf:type'), Node('rdf:Class')]]
300
+ context = "http://test_repository_contexts.org"
301
+ repository.data = graph, context
271
302
  contexts = repository.contexts
272
303
 
273
304
  # Check if the added context is there
@@ -279,12 +310,12 @@ foaf: http://xmlns.com/foaf/0.1/
279
310
  assert_equal Node("foaf:Agent"), Foaf::Thing.new.rdf::type.first
280
311
 
281
312
  person_node = Node(nil)
282
- person_node.foaf::age = "19"
283
- person = Foaf::Person.new(person_node)
284
- assert_equal ["19"], person.foaf::age
285
-
313
+ person_node.foaf::age = "19"
314
+ person = Foaf::Person.new(person_node)
315
+ assert_equal ["19"], person.foaf::age
316
+
286
317
  person = Foaf::Person.new('foaf:age'=>"25", 'rdf:type'=>Node('rdf:Resource'))
287
- person.happy_birthday!
318
+ person.happy_birthday!
288
319
  assert_equal ["26"], person.foaf::age
289
320
  assert_equal Node("foaf:Person"), person.rdf::type.first
290
321
  end
@@ -293,11 +324,11 @@ foaf: http://xmlns.com/foaf/0.1/
293
324
  graph = RDF::Graph.new
294
325
  person_node = Node(nil)
295
326
  person_node.rdf::type = Node('foaf:Person')
296
- person_node.foaf::age = "25"
297
- graph << person_node
327
+ person_node.foaf::age = "25"
328
+ graph << person_node
298
329
 
299
330
  person = graph.node(person_node)
300
- person.happy_birthday!
331
+ person.happy_birthday!
301
332
  assert_equal ["26"], person.foaf::age
302
333
  assert_equal person.object_id, graph.node(person_node).object_id
303
334
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 7
9
- version: 0.3.7
8
+ - 8
9
+ version: 0.3.8
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-25 00:00:00 +01:00
17
+ date: 2011-04-04 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency