lightrdf 0.3.1 → 0.3.2
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 +4 -0
- data/lib/lightrdf/graph.rb +28 -0
- data/lib/lightrdf.rb +20 -1
- data/lightrdf.gemspec +2 -2
- data/test/test_lightrdf.rb +19 -0
- metadata +3 -3
data/History.txt
CHANGED
data/lib/lightrdf/graph.rb
CHANGED
@@ -52,6 +52,34 @@ module RDF
|
|
52
52
|
values.select &block
|
53
53
|
end
|
54
54
|
|
55
|
+
# Returns true if the graph is contained into this one.
|
56
|
+
# It appropriately disambiguates blank nodes.
|
57
|
+
def contains? graph2
|
58
|
+
triples = self.triples
|
59
|
+
triples2 = graph2.triples
|
60
|
+
return false if triples2.size > triples.size
|
61
|
+
|
62
|
+
bnodes = self.keys.select { |node| ID::bnode?(node) }
|
63
|
+
bnodes2 = graph2.keys.select { |node| ID::bnode?(node) }
|
64
|
+
|
65
|
+
# Tries all the mappings between blank nodes
|
66
|
+
mappings = bnodes2.mappings(bnodes)
|
67
|
+
|
68
|
+
mappings.each do |mapping|
|
69
|
+
new_triples = triples2.map { |s,p,o| [ ID::bnode?(s) ? mapping[s] : s,
|
70
|
+
ID::bnode?(p) ? mapping[p] : p,
|
71
|
+
ID::bnode?(o) ? mapping[o] : o ]}
|
72
|
+
diff = triples - new_triples
|
73
|
+
return true if diff.size == triples.size - new_triples.size
|
74
|
+
end
|
75
|
+
|
76
|
+
false
|
77
|
+
end
|
78
|
+
|
79
|
+
def == graph2
|
80
|
+
triples.size == graph2.triples.size and contains?(graph2)
|
81
|
+
end
|
82
|
+
|
55
83
|
# This is equivalent to [], but tries to return a NodeProxy
|
56
84
|
# It stores created objects in a pool
|
57
85
|
def node id, type=nil
|
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.
|
5
|
+
VERSION = '0.3.2'
|
6
6
|
end
|
7
7
|
|
8
8
|
require 'rubygems'
|
@@ -21,3 +21,22 @@ require "lightrdf/graph"
|
|
21
21
|
require "lightrdf/node"
|
22
22
|
require "lightrdf/node_proxy"
|
23
23
|
require "lightrdf/repository"
|
24
|
+
|
25
|
+
class Array
|
26
|
+
# Returns an array of hashes with the possible mappings
|
27
|
+
# between the elements in both arrays
|
28
|
+
def mappings array2
|
29
|
+
return [{}] if self.empty? or array2.empty?
|
30
|
+
mappings = []
|
31
|
+
each do |item|
|
32
|
+
mapping = {}
|
33
|
+
array2.each do |item2|
|
34
|
+
mapping[item] = item2
|
35
|
+
(self - [item]).mappings(array2 - [item2]).each do |submapping|
|
36
|
+
mappings << mapping.merge(submapping)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
mappings.uniq
|
41
|
+
end
|
42
|
+
end
|
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.
|
5
|
+
s.version = "0.3.2"
|
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-22}
|
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
@@ -309,4 +309,23 @@ foaf: http://xmlns.com/foaf/0.1/
|
|
309
309
|
person2 = Foaf::Person.new(node)
|
310
310
|
assert_equal person1.id, person2.id
|
311
311
|
end
|
312
|
+
|
313
|
+
def test_graph_contains
|
314
|
+
graph1 = RDF::Graph.new [ [Node('ex:alice'), Node('foaf:age'), "24"]]
|
315
|
+
graph2 = RDF::Graph.new [ [Node('ex:alice'), Node('foaf:knows'), Node('_:bnode392')],
|
316
|
+
[Node('_:bnode392'), Node('foaf:name'), "Bob"] ]
|
317
|
+
graph3 = RDF::Graph.new [ [Node('ex:alice'), Node('foaf:knows'), Node('_:bnode965')],
|
318
|
+
[Node('_:bnode965'), Node('foaf:name'), "Bob"] ]
|
319
|
+
graph4 = RDF::Graph.new [ [Node('ex:alice'), Node('foaf:knows'), Node('_:bnode392')],
|
320
|
+
[Node('_:bnode392'), Node('foaf:name'), "Robert"] ]
|
321
|
+
graph5 = RDF::Graph.new [ [Node('ex:alice'), Node('foaf:knows'), Node('_:bnode390')],
|
322
|
+
[Node('_:bnode390'), Node('foaf:name'), "Robert"],
|
323
|
+
[Node('ex:alice'), Node('foaf:knows'), Node('_:bnode967')],
|
324
|
+
[Node('_:bnode967'), Node('foaf:name'), "Bob"]]
|
325
|
+
assert !graph1.contains?(graph2)
|
326
|
+
assert graph2.contains?(graph3)
|
327
|
+
assert !graph2.contains?(graph4)
|
328
|
+
assert graph2 != graph4
|
329
|
+
assert graph5.contains?(graph2)
|
330
|
+
end
|
312
331
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 2
|
9
|
+
version: 0.3.2
|
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-22 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|