rdf_context 0.5.10 → 0.5.11
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/.yardopts +2 -1
- data/History.rdoc +7 -0
- data/README.rdoc +14 -14
- data/Rakefile +7 -7
- data/VERSION +1 -1
- data/lib/rdf_context/graph.rb +19 -16
- data/lib/rdf_context/rdfaparser.rb +1 -1
- data/lib/rdf_context/store/abstract_sql_store.rb +12 -4
- data/lib/rdf_context/store/abstract_store.rb +6 -0
- data/lib/rdf_context/store/active_record_store.rb +5 -11
- data/lib/rdf_context/store/list_store.rb +5 -0
- data/lib/rdf_context/store/memory_store.rb +38 -18
- data/lib/rdf_context/store/sqlite3_store.rb +0 -7
- data/rdf_context.gemspec +11 -122
- data/spec/active_record_store_spec.rb +4 -0
- data/spec/graph_spec.rb +6 -2
- data/spec/matchers.rb +1 -1
- data/spec/rdfa_helper.rb +6 -17
- data/spec/spec_helper.rb +4 -9
- data/spec/sqlite3_store_spec.rb +2 -2
- data/spec/store_helper.rb +69 -15
- metadata +35 -122
- data/spec/rdfa-triples/0001.nt +0 -1
- data/spec/rdfa-triples/0006.nt +0 -2
- data/spec/rdfa-triples/0007.nt +0 -3
- data/spec/rdfa-triples/0008.nt +0 -1
- data/spec/rdfa-triples/0009.nt +0 -1
- data/spec/rdfa-triples/0010.nt +0 -2
- data/spec/rdfa-triples/0011.nt +0 -3
- data/spec/rdfa-triples/0012.nt +0 -1
- data/spec/rdfa-triples/0013.nt +0 -1
- data/spec/rdfa-triples/0014.nt +0 -1
- data/spec/rdfa-triples/0015.nt +0 -2
- data/spec/rdfa-triples/0017.nt +0 -3
- data/spec/rdfa-triples/0018.nt +0 -1
- data/spec/rdfa-triples/0019.nt +0 -1
- data/spec/rdfa-triples/0020.nt +0 -1
- data/spec/rdfa-triples/0021.nt +0 -1
- data/spec/rdfa-triples/0023.nt +0 -1
- data/spec/rdfa-triples/0025.nt +0 -2
- data/spec/rdfa-triples/0026.nt +0 -1
- data/spec/rdfa-triples/0027.nt +0 -1
- data/spec/rdfa-triples/0029.nt +0 -1
- data/spec/rdfa-triples/0030.nt +0 -1
- data/spec/rdfa-triples/0031.nt +0 -1
- data/spec/rdfa-triples/0032.nt +0 -1
- data/spec/rdfa-triples/0033.nt +0 -2
- data/spec/rdfa-triples/0034.nt +0 -1
- data/spec/rdfa-triples/0035.nt +0 -1
- data/spec/rdfa-triples/0036.nt +0 -1
- data/spec/rdfa-triples/0037.nt +0 -1
- data/spec/rdfa-triples/0038.nt +0 -1
- data/spec/rdfa-triples/0039.nt +0 -1
- data/spec/rdfa-triples/0040.nt +0 -1
- data/spec/rdfa-triples/0041.nt +0 -1
- data/spec/rdfa-triples/0042.nt +0 -0
- data/spec/rdfa-triples/0046.nt +0 -3
- data/spec/rdfa-triples/0047.nt +0 -3
- data/spec/rdfa-triples/0048.nt +0 -3
- data/spec/rdfa-triples/0049.nt +0 -2
- data/spec/rdfa-triples/0050.nt +0 -2
- data/spec/rdfa-triples/0051.nt +0 -2
- data/spec/rdfa-triples/0052.nt +0 -1
- data/spec/rdfa-triples/0053.nt +0 -2
- data/spec/rdfa-triples/0054.nt +0 -2
- data/spec/rdfa-triples/0055.nt +0 -2
- data/spec/rdfa-triples/0056.nt +0 -3
- data/spec/rdfa-triples/0057.nt +0 -4
- data/spec/rdfa-triples/0058.nt +0 -6
- data/spec/rdfa-triples/0059.nt +0 -6
- data/spec/rdfa-triples/0060.nt +0 -2
- data/spec/rdfa-triples/0061.nt +0 -1
- data/spec/rdfa-triples/0062.nt +0 -1
- data/spec/rdfa-triples/0063.nt +0 -1
- data/spec/rdfa-triples/0064.nt +0 -1
- data/spec/rdfa-triples/0065.nt +0 -3
- data/spec/rdfa-triples/0066.nt +0 -1
- data/spec/rdfa-triples/0067.nt +0 -1
- data/spec/rdfa-triples/0068.nt +0 -1
- data/spec/rdfa-triples/0069.nt +0 -1
- data/spec/rdfa-triples/0070.nt +0 -1
- data/spec/rdfa-triples/0071.nt +0 -1
- data/spec/rdfa-triples/0072.nt +0 -1
- data/spec/rdfa-triples/0073.nt +0 -1
- data/spec/rdfa-triples/0074.nt +0 -1
- data/spec/rdfa-triples/0075.nt +0 -1
- data/spec/rdfa-triples/0076.nt +0 -23
- data/spec/rdfa-triples/0077.nt +0 -23
- data/spec/rdfa-triples/0078.nt +0 -6
- data/spec/rdfa-triples/0079.nt +0 -3
- data/spec/rdfa-triples/0080.nt +0 -1
- data/spec/rdfa-triples/0081.nt +0 -6
- data/spec/rdfa-triples/0082.nt +0 -8
- data/spec/rdfa-triples/0083.nt +0 -6
- data/spec/rdfa-triples/0084.nt +0 -8
- data/spec/rdfa-triples/0085.nt +0 -4
- data/spec/rdfa-triples/0086.nt +0 -0
- data/spec/rdfa-triples/0087.nt +0 -23
- data/spec/rdfa-triples/0088.nt +0 -3
- data/spec/rdfa-triples/0089.nt +0 -1
- data/spec/rdfa-triples/0090.nt +0 -1
- data/spec/rdfa-triples/0091.nt +0 -3
- data/spec/rdfa-triples/0092.nt +0 -3
- data/spec/rdfa-triples/0093.nt +0 -2
- data/spec/rdfa-triples/0094.nt +0 -3
- data/spec/rdfa-triples/0099.nt +0 -1
- data/spec/rdfa-triples/0100.nt +0 -3
- data/spec/rdfa-triples/0101.nt +0 -3
- data/spec/rdfa-triples/0102.nt +0 -1
- data/spec/rdfa-triples/0103.nt +0 -1
- data/spec/rdfa-triples/0104.nt +0 -3
- data/spec/rdfa-triples/0105.nt +0 -1
- data/spec/rdfa-triples/0106.nt +0 -1
- data/spec/rdfa-triples/0107.nt +0 -0
- data/spec/rdfa-triples/0108.nt +0 -1
- data/spec/rdfa-triples/0109.nt +0 -1
- data/spec/rdfa-triples/0110.nt +0 -1
- data/spec/rdfa-triples/0111.nt +0 -2
- data/spec/rdfa-triples/0112.nt +0 -1
- data/spec/rdfa-triples/0113.nt +0 -2
- data/spec/rdfa-triples/0114.nt +0 -3
- data/spec/rdfa-triples/0115.nt +0 -4
- data/spec/rdfa-triples/0116.nt +0 -2
- data/spec/rdfa-triples/0117.nt +0 -2
- data/spec/rdfa-triples/0118.nt +0 -1
- data/spec/rdfa-triples/0119.nt +0 -1
- data/spec/rdfa-triples/0120.nt +0 -1
- data/spec/rdfa-triples/0121.nt +0 -2
- data/spec/rdfa-triples/0122.nt +0 -1
- data/spec/rdfa-triples/0123.nt +0 -3
- data/spec/rdfa-triples/0124.nt +0 -4
- data/spec/rdfa-triples/0125.nt +0 -1
- data/spec/rdfa-triples/0126.nt +0 -3
- data/spec/rdfa-triples/1001.nt +0 -6
data/.yardopts
CHANGED
data/History.rdoc
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
=== 0.5.11
|
2
|
+
* AbstractSQLStore was incorrectly putting Literal::Language representation rather than value in database.
|
3
|
+
* Changed Graph#eql? and Graph#== to do simple equality check.
|
4
|
+
* Added Graph#isomorphic? which does more exhaustive equivalence check.
|
5
|
+
* Fixed bug in MemoryStore where a frozen resource could be returned.
|
6
|
+
* AbstractStore#destroy either removes all triples from store, or specified context. No longer removes the DB file.
|
7
|
+
|
1
8
|
=== 0.5.10
|
2
9
|
* N3 Parser
|
3
10
|
* Allow mixed case literal languages.
|
data/README.rdoc
CHANGED
@@ -3,32 +3,32 @@
|
|
3
3
|
Context-sensitive RDF Graphs, including a ConjunctiveGraph.
|
4
4
|
|
5
5
|
A set of compliant RDF parsers:
|
6
|
-
*
|
6
|
+
* Notation3
|
7
7
|
* RDF/XML
|
8
8
|
* RDFa
|
9
9
|
|
10
|
-
Multiple data-stores may be attached to a Graph, including Memory, List and SQLite3
|
10
|
+
Multiple data-stores may be attached to a Graph, including Memory, List, ActiveRecord and SQLite3
|
11
11
|
|
12
|
-
== DESCRIPTION
|
12
|
+
== DESCRIPTION
|
13
13
|
|
14
14
|
RdfContext is an RDF library for Ruby.
|
15
15
|
|
16
|
-
== FEATURES
|
16
|
+
== FEATURES
|
17
17
|
RdfContext parses RDF/XML, RDFa and N3-rdf into a Graph object. It also serializes RDF/XML and N-Triples from the Graph.
|
18
18
|
|
19
19
|
* Fully compliant RDF/XML parser.
|
20
20
|
* Fully compliant XHTML/RDFa 1.0 parser.
|
21
|
-
* Fully compliant
|
21
|
+
* Fully compliant Notation3 parser (N3-rdf level)
|
22
22
|
* Turtle, N-Triples and RDF/XML serializer
|
23
23
|
* RDFa tests use SPARQL for most tests due to Rasqal limitations. Other tests compare directly against N-triples.
|
24
|
-
* Graph serializes into RDF/XML and N-Triples.
|
24
|
+
* Graph serializes into RDF/XML, Turtle and N-Triples.
|
25
25
|
* ConjunctiveGraph, named Graphs and contextual storage modules.
|
26
26
|
|
27
27
|
RdfContext is based, in part, on Tom Morris' Reddy gem.
|
28
28
|
|
29
29
|
Install with 'gem install rdf_context'
|
30
30
|
|
31
|
-
== Usage
|
31
|
+
== Usage
|
32
32
|
=== Graphs
|
33
33
|
Instantiate a graph using Graph.new. A Graph may take an :identifier (defaults to a BNode) and
|
34
34
|
a :store (defaults to :list_store)
|
@@ -168,7 +168,7 @@ An RDF store could provide a standard set of interfaces for the manipulation, ma
|
|
168
168
|
These interfaces work on contexts and formulae (for stores that are formula-aware) interchangeably.
|
169
169
|
*contexts*:: Closure or list over all contexts in the graph. If triple is specified, it returns all contexts the triple is in.
|
170
170
|
|
171
|
-
== Dependencies
|
171
|
+
== Dependencies
|
172
172
|
|
173
173
|
* Addressable
|
174
174
|
* Treetop
|
@@ -180,11 +180,11 @@ These interfaces work on contexts and formulae (for stores that are formula-awar
|
|
180
180
|
* Redland/Rasqal
|
181
181
|
* ActiveSupport
|
182
182
|
|
183
|
-
== INSTALL
|
183
|
+
== INSTALL
|
184
184
|
|
185
185
|
* sudo gem install rdf_context
|
186
186
|
|
187
|
-
== TODO
|
187
|
+
== TODO
|
188
188
|
* Testing
|
189
189
|
* RDFa updates for new tests and non XHTML representations.
|
190
190
|
* Graphs
|
@@ -200,7 +200,7 @@ These interfaces work on contexts and formulae (for stores that are formula-awar
|
|
200
200
|
* RDoc[http://rdoc.info/projects/gkellogg/rdf_context]
|
201
201
|
* History[http://github.com/gkellogg/rdf_context/blob/master/History.txt]
|
202
202
|
|
203
|
-
== LICENSE
|
203
|
+
== LICENSE
|
204
204
|
|
205
205
|
(The MIT License)
|
206
206
|
|
@@ -230,7 +230,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
230
230
|
== FEEDBACK
|
231
231
|
|
232
232
|
|
233
|
-
*
|
234
|
-
* github.com/gkellogg/rdf_context
|
235
|
-
* gkellogg
|
233
|
+
* http://rubygems.org/rdf_context
|
234
|
+
* http://github.com/gkellogg/rdf_context
|
235
|
+
* http://rdoc.info/github/gkellogg/rdf_context
|
236
236
|
* public-rdf-ruby mailing list on w3.org
|
data/Rakefile
CHANGED
@@ -8,13 +8,12 @@ begin
|
|
8
8
|
gemspec.name = "rdf_context"
|
9
9
|
gemspec.summary = "RdfContext is an RDF library for Ruby supporting contextual graphs, multiple datastores and compliant RDF/XML, RDFa and N3 parsers."
|
10
10
|
gemspec.description = <<-DESCRIPTION
|
11
|
-
RdfContext parses RDF/XML, RDFa and N3
|
11
|
+
RdfContext parses RDF/XML, RDFa and N3 into a Graph object. It also serializes RDF/XML, Turtle and N-Triples from the Graph.
|
12
12
|
|
13
13
|
* Fully compliant RDF/XML parser.
|
14
14
|
* Fully compliant XHTML/RDFa 1.0 parser.
|
15
|
-
* N3-rdf
|
16
|
-
* N-Triples and RDF/XML serializer
|
17
|
-
* Graph serializes into RDF/XML and N-Triples.
|
15
|
+
* Notation3 parser (N3-rdf level)
|
16
|
+
* N-Triples, Turtle and RDF/XML serializer
|
18
17
|
* ConjunctiveGraph, named Graphs and contextual storage modules.
|
19
18
|
|
20
19
|
Install with 'gem install rdf_context'
|
@@ -27,7 +26,8 @@ begin
|
|
27
26
|
gemspec.add_dependency('nokogiri', '>= 1.4.3')
|
28
27
|
gemspec.add_dependency('builder', '>= 2.1.2')
|
29
28
|
gemspec.add_development_dependency('rspec', '>= 2.1.0')
|
30
|
-
gemspec.add_development_dependency('activesupport', '
|
29
|
+
gemspec.add_development_dependency('activesupport', '~> 2.3.8')
|
30
|
+
gemspec.add_development_dependency('activerecord', '~> 2.3.8')
|
31
31
|
gemspec.add_development_dependency('yard')
|
32
32
|
gemspec.extra_rdoc_files = %w(README.rdoc History.txt)
|
33
33
|
end
|
@@ -55,8 +55,8 @@ RSpec::Core::RakeTask.new("spec:rcov") do |spec|
|
|
55
55
|
end
|
56
56
|
|
57
57
|
desc "Generate HTML report specs"
|
58
|
-
RSpec::Core::RakeTask.new("spec") do |spec|
|
59
|
-
spec.rspec_opts = ["--format", "html
|
58
|
+
RSpec::Core::RakeTask.new("doc:spec") do |spec|
|
59
|
+
spec.rspec_opts = ["--format", "html", "-o", "doc/spec.html"]
|
60
60
|
end
|
61
61
|
|
62
62
|
task :spec => :check_dependencies
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.11
|
data/lib/rdf_context/graph.rb
CHANGED
@@ -64,12 +64,7 @@ module RdfContext
|
|
64
64
|
# If configuration is nil, remove the graph context
|
65
65
|
# @return [void]
|
66
66
|
def destroy(configuration = nil)
|
67
|
-
|
68
|
-
@store.destroy(configuration)
|
69
|
-
else
|
70
|
-
@store.remove(Triple.new(nil, nil, nil), self)
|
71
|
-
end
|
72
|
-
|
67
|
+
@store.destroy(configuration ? configuration : {:context => self})
|
73
68
|
self.freeze
|
74
69
|
end
|
75
70
|
|
@@ -488,7 +483,19 @@ module RdfContext
|
|
488
483
|
end
|
489
484
|
end
|
490
485
|
|
491
|
-
# Two graphs are equal if each
|
486
|
+
# Two graphs are equal (==) if each other if they are both graphs have the same identifiers and the same size.
|
487
|
+
#
|
488
|
+
# If each graph has a BNode identifier, they are considered to be equal if the have the same size
|
489
|
+
#
|
490
|
+
# @param [Graph] graph
|
491
|
+
# @return [Boolean]
|
492
|
+
def ==(other)
|
493
|
+
#puts "== size #{self.size} vs #{other.size}" if ::RdfContext::debug?
|
494
|
+
other.is_a?(Graph) && self.size == other.size &&
|
495
|
+
((other.identifier.is_a?(BNode) && identifier.is_a?(BNode)) || (other.identifier.to_s == identifier.to_s))
|
496
|
+
end
|
497
|
+
|
498
|
+
# Two graphs are isomorphic if each is an instance of the other, considering BNode equivalence.
|
492
499
|
# This may be done by creating a new graph an substituting each permutation of BNode identifiers
|
493
500
|
# from self to other until every permutation is exhausted, or a textual equivalence is found
|
494
501
|
# after sorting each graph.
|
@@ -496,20 +503,18 @@ module RdfContext
|
|
496
503
|
# We just follow Python RDFlib's lead and do a simple comparison
|
497
504
|
# @param [Graph] graph
|
498
505
|
# @return [Boolean]
|
499
|
-
def
|
500
|
-
|
501
|
-
return false if !other.is_a?(Graph) || self.size != other.size
|
502
|
-
return false unless other.identifier.to_s == identifier.to_s unless other.identifier.is_a?(BNode) && identifier.is_a?(BNode)
|
506
|
+
def isomorphic?(other)
|
507
|
+
return false unless self == other
|
503
508
|
|
504
509
|
bn_self = bnodes.values.sort
|
505
510
|
bn_other = other.bnodes.values.sort
|
506
|
-
puts "
|
511
|
+
puts "isomorphic? bnodes '#{bn_self.to_sentence}' vs '#{bn_other.to_sentence}'" if ::RdfContext::debug?
|
507
512
|
return false unless bn_self == bn_other
|
508
513
|
|
509
514
|
# Check each triple to see if it's contained in the other graph
|
510
515
|
triples do |t, ctx|
|
511
516
|
next if t.subject.is_a?(BNode) || t.predicate.is_a?(BNode) || t.object.is_a?(BNode)
|
512
|
-
puts "
|
517
|
+
puts "isomorphic? contains '#{t.to_ntriples}: #{other.contains?(t)}'" if ::RdfContext::debug?
|
513
518
|
return false unless other.contains?(t)
|
514
519
|
end
|
515
520
|
|
@@ -525,7 +530,7 @@ module RdfContext
|
|
525
530
|
predicate = bn_map[predicate] if bn_map.has_key?(predicate)
|
526
531
|
object = bn_map[object] if bn_map.has_key?(object)
|
527
532
|
tn = Triple.new(subject, predicate, object)
|
528
|
-
puts "
|
533
|
+
puts " isomorphic? contains '#{tn.inspect}': #{other.contains?(tn)}" if ::RdfContext::debug?
|
529
534
|
next if other.contains?(tn)
|
530
535
|
|
531
536
|
puts " no, next permutation" if ::RdfContext::debug?
|
@@ -541,8 +546,6 @@ module RdfContext
|
|
541
546
|
# Exhausted all permutations, unless there were no bnodes
|
542
547
|
bn_self.length == 0
|
543
548
|
end
|
544
|
-
|
545
|
-
alias_method :==, :eql?
|
546
549
|
|
547
550
|
# Parse source into Graph.
|
548
551
|
#
|
@@ -72,6 +72,14 @@ module RdfContext
|
|
72
72
|
@db.close
|
73
73
|
end
|
74
74
|
|
75
|
+
# Destroy store or context
|
76
|
+
# If context is specified remove that context, otherwise, remove all triples
|
77
|
+
#
|
78
|
+
# @option configuration [Graph] :context Remove the specified context
|
79
|
+
def destroy(configuration = {})
|
80
|
+
remove(Triple.new(nil, nil, nil), configuration[:context])
|
81
|
+
end
|
82
|
+
|
75
83
|
# Add a triple to the store
|
76
84
|
# Add to default context, if context is nil
|
77
85
|
#
|
@@ -691,8 +699,8 @@ module RdfContext
|
|
691
699
|
normalizeTerm(triple.object),
|
692
700
|
normalizeTerm(context),
|
693
701
|
triplePattern,
|
694
|
-
(triple.object.is_a?(Literal) ? triple.object.lang :
|
695
|
-
(triple.object.is_a?(Literal) ? triple.object.encoding.value.to_s :
|
702
|
+
(triple.object.is_a?(Literal) && triple.object.lang ? triple.object.lang.to_s : nil),
|
703
|
+
(triple.object.is_a?(Literal) && triple.object.encoding ? triple.object.encoding.value.to_s : nil),
|
696
704
|
]
|
697
705
|
end
|
698
706
|
|
@@ -709,8 +717,8 @@ module RdfContext
|
|
709
717
|
normalizeTerm(triple.object),
|
710
718
|
normalizeTerm(context),
|
711
719
|
triplePattern,
|
712
|
-
(triple.object.is_a?(Literal) ? triple.object.lang :
|
713
|
-
(triple.object.is_a?(Literal) ? triple.object.encoding.value.to_s :
|
720
|
+
(triple.object.is_a?(Literal) && triple.object.lang ? triple.object.lang.to_s : nil),
|
721
|
+
(triple.object.is_a?(Literal) && triple.object.encoding ? triple.object.encoding.value.to_s : nil),
|
714
722
|
]
|
715
723
|
else
|
716
724
|
[
|
@@ -62,6 +62,12 @@ module RdfContext
|
|
62
62
|
# @raise [StoreException] Not Implemented
|
63
63
|
# @return [Boolean]
|
64
64
|
def contains?(triple, context = nil); raise StoreException, "not implemented"; end
|
65
|
+
|
66
|
+
# Return contexts in the store (optionally matching triple), or empty if not context aware
|
67
|
+
# @return [Array<Graph>]
|
68
|
+
def contexts(triple = nil)
|
69
|
+
return []
|
70
|
+
end
|
65
71
|
|
66
72
|
# Default (sub-optimal) implemenations of interfaces
|
67
73
|
def inspect
|
@@ -1,4 +1,4 @@
|
|
1
|
-
gem 'activerecord'
|
1
|
+
gem 'activerecord', "~> 2.3.8"
|
2
2
|
require 'active_record'
|
3
3
|
|
4
4
|
module RdfContext
|
@@ -38,7 +38,7 @@ module RdfContext
|
|
38
38
|
executeSQL(CREATE_QUOTED_STATEMENTS_TABLE % @internedId)
|
39
39
|
executeSQL(CREATE_NS_BINDS_TABLE % @internedId)
|
40
40
|
executeSQL(CREATE_LITERAL_STATEMENTS_TABLE % @internedId)
|
41
|
-
|
41
|
+
|
42
42
|
# Create indicies
|
43
43
|
{
|
44
44
|
asserted_table => {
|
@@ -76,7 +76,7 @@ module RdfContext
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
79
|
-
|
79
|
+
|
80
80
|
# Teardown DB files
|
81
81
|
def teardown
|
82
82
|
# Drop indicies
|
@@ -116,7 +116,7 @@ module RdfContext
|
|
116
116
|
executeSQL("DROP INDEX #{index} ON #{tn}")
|
117
117
|
end
|
118
118
|
end
|
119
|
-
|
119
|
+
|
120
120
|
# Drop tables
|
121
121
|
executeSQL("DROP TABLE #{namespace_binds}")
|
122
122
|
executeSQL("DROP TABLE #{quoted_table}")
|
@@ -124,12 +124,6 @@ module RdfContext
|
|
124
124
|
executeSQL("DROP TABLE #{asserted_type_table}")
|
125
125
|
executeSQL("DROP TABLE #{asserted_table}")
|
126
126
|
end
|
127
|
-
|
128
|
-
# Destroy database
|
129
|
-
#
|
130
|
-
# @option options[String] :path Path to database file defaults to a file in the current directory based on a hash of the store identifier
|
131
|
-
def destroy(options = {})
|
132
|
-
end
|
133
127
|
|
134
128
|
protected
|
135
129
|
|
@@ -204,7 +198,7 @@ module RdfContext
|
|
204
198
|
# Yields each row
|
205
199
|
def executeSQL(qStr, *params, &block)
|
206
200
|
conn = ActiveRecord::Base.connection
|
207
|
-
|
201
|
+
|
208
202
|
puts "executeSQL: params=#{params.flatten.inspect}" if ::RdfContext::debug?
|
209
203
|
puts "executeSQL: '#{params.dup.unshift(qStr).join("', '")}'" if ::RdfContext::debug?
|
210
204
|
qStr = ActiveRecord::Base.send(:replace_bind_variables, qStr, params.flatten)
|
@@ -16,6 +16,11 @@ module RdfContext
|
|
16
16
|
"ListStore[id=#{identifier}, size=#{@triples.length}]"
|
17
17
|
end
|
18
18
|
|
19
|
+
# Destroy the store, as it can contain only one context
|
20
|
+
def destroy(configuration = {})
|
21
|
+
@triples = []
|
22
|
+
end
|
23
|
+
|
19
24
|
# Add triple to store
|
20
25
|
# @param [Triple] triple
|
21
26
|
# @param [Graph] context (nil) ignored
|
@@ -36,22 +36,7 @@ module RdfContext
|
|
36
36
|
# @return [MemoryStore]
|
37
37
|
def initialize(identifier = nil, configuration = {})
|
38
38
|
super
|
39
|
-
|
40
|
-
@cspo = {}
|
41
|
-
# indexed by [context][predicate][object][subject] = 1
|
42
|
-
@cpos = {}
|
43
|
-
# indexed by [context][object][subject][predicate] = 1
|
44
|
-
@cosp = {}
|
45
|
-
# indexed by [subject][predicate][object] = [context]
|
46
|
-
@spo = {}
|
47
|
-
# indexed by [predicate][object][subject] = [context]
|
48
|
-
@pos = {}
|
49
|
-
# indexed by [object][subject][predicate] = [context]
|
50
|
-
@osp = {}
|
51
|
-
# indexes integer keys to identifiers
|
52
|
-
@forward = {}
|
53
|
-
# reverse index of forward
|
54
|
-
@reverse = {}
|
39
|
+
destroy({})
|
55
40
|
end
|
56
41
|
|
57
42
|
def inspect
|
@@ -70,6 +55,39 @@ module RdfContext
|
|
70
55
|
" reverse: #{@reverse.inspect}\n"
|
71
56
|
end
|
72
57
|
|
58
|
+
# Destroy store or context
|
59
|
+
# If context is specified remove that context, otherwise, re-initialize the store
|
60
|
+
#
|
61
|
+
# @option configuration [Graph] :context Remove the specified context
|
62
|
+
def destroy(configuration = {})
|
63
|
+
if ctx = configuration[:context]
|
64
|
+
remove(Triple.new(nil, nil, nil), ctx)
|
65
|
+
|
66
|
+
ci = resource_to_int(ctx)
|
67
|
+
if ci
|
68
|
+
@reverse.delete(ctx.hash)
|
69
|
+
@forward.delete(ci)
|
70
|
+
end
|
71
|
+
else
|
72
|
+
# indexed by [context][subject][predicate][object] = 1
|
73
|
+
@cspo = {}
|
74
|
+
# indexed by [context][predicate][object][subject] = 1
|
75
|
+
@cpos = {}
|
76
|
+
# indexed by [context][object][subject][predicate] = 1
|
77
|
+
@cosp = {}
|
78
|
+
# indexed by [subject][predicate][object] = [context]
|
79
|
+
@spo = {}
|
80
|
+
# indexed by [predicate][object][subject] = [context]
|
81
|
+
@pos = {}
|
82
|
+
# indexed by [object][subject][predicate] = [context]
|
83
|
+
@osp = {}
|
84
|
+
# indexes integer keys to identifiers
|
85
|
+
@forward = {}
|
86
|
+
# reverse index of forward
|
87
|
+
@reverse = {}
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
73
91
|
# Add a triple to the store
|
74
92
|
# Add to default context, if context is nil
|
75
93
|
#
|
@@ -145,7 +163,7 @@ module RdfContext
|
|
145
163
|
osp = @osp
|
146
164
|
else
|
147
165
|
ci = resource_to_int(context)
|
148
|
-
return []
|
166
|
+
return [] if context.frozen? || !ci
|
149
167
|
spo = @cspo[ci]
|
150
168
|
pos = @cpos[ci]
|
151
169
|
osp = @cosp[ci]
|
@@ -354,6 +372,8 @@ module RdfContext
|
|
354
372
|
def triple_to_int(triple)
|
355
373
|
[@reverse[triple.subject.hash], @reverse[triple.predicate.hash], @reverse[triple.object.hash]]
|
356
374
|
end
|
357
|
-
def resource_to_int(resource);
|
375
|
+
def resource_to_int(resource);
|
376
|
+
@reverse[resource.hash]
|
377
|
+
end
|
358
378
|
end
|
359
379
|
end
|
@@ -142,13 +142,6 @@ module RdfContext
|
|
142
142
|
executeSQL("DROP TABLE #{asserted_table}")
|
143
143
|
end
|
144
144
|
|
145
|
-
# Destroy database
|
146
|
-
#
|
147
|
-
# @option options[String] :path Path to database file defaults to a file in the current directory based on a hash of the store identifier
|
148
|
-
def destroy(options = {})
|
149
|
-
File.delete(@path)
|
150
|
-
end
|
151
|
-
|
152
145
|
protected
|
153
146
|
|
154
147
|
# Where clase utility functions
|
data/rdf_context.gemspec
CHANGED
@@ -5,19 +5,18 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rdf_context}
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.11"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Gregg Kellogg"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2011-01-07}
|
13
13
|
s.default_executable = %q{rdf_context}
|
14
|
-
s.description = %q{ RdfContext parses RDF/XML, RDFa and N3
|
14
|
+
s.description = %q{ RdfContext parses RDF/XML, RDFa and N3 into a Graph object. It also serializes RDF/XML, Turtle and N-Triples from the Graph.
|
15
15
|
|
16
16
|
* Fully compliant RDF/XML parser.
|
17
17
|
* Fully compliant XHTML/RDFa 1.0 parser.
|
18
|
-
* N3-rdf
|
19
|
-
* N-Triples and RDF/XML serializer
|
20
|
-
* Graph serializes into RDF/XML and N-Triples.
|
18
|
+
* Notation3 parser (N3-rdf level)
|
19
|
+
* N-Triples, Turtle and RDF/XML serializer
|
21
20
|
* ConjunctiveGraph, named Graphs and contextual storage modules.
|
22
21
|
|
23
22
|
Install with 'gem install rdf_context'
|
@@ -30,7 +29,6 @@ Gem::Specification.new do |s|
|
|
30
29
|
s.files = [
|
31
30
|
".autotest",
|
32
31
|
".gitignore",
|
33
|
-
".yardoc",
|
34
32
|
".yardopts",
|
35
33
|
"History.rdoc",
|
36
34
|
"README.rdoc",
|
@@ -91,118 +89,6 @@ Gem::Specification.new do |s|
|
|
91
89
|
"spec/parser_spec.rb",
|
92
90
|
"spec/quoted_graph_spec.rb",
|
93
91
|
"spec/rdf_helper.rb",
|
94
|
-
"spec/rdfa-triples/0001.nt",
|
95
|
-
"spec/rdfa-triples/0006.nt",
|
96
|
-
"spec/rdfa-triples/0007.nt",
|
97
|
-
"spec/rdfa-triples/0008.nt",
|
98
|
-
"spec/rdfa-triples/0009.nt",
|
99
|
-
"spec/rdfa-triples/0010.nt",
|
100
|
-
"spec/rdfa-triples/0011.nt",
|
101
|
-
"spec/rdfa-triples/0012.nt",
|
102
|
-
"spec/rdfa-triples/0013.nt",
|
103
|
-
"spec/rdfa-triples/0014.nt",
|
104
|
-
"spec/rdfa-triples/0015.nt",
|
105
|
-
"spec/rdfa-triples/0017.nt",
|
106
|
-
"spec/rdfa-triples/0018.nt",
|
107
|
-
"spec/rdfa-triples/0019.nt",
|
108
|
-
"spec/rdfa-triples/0020.nt",
|
109
|
-
"spec/rdfa-triples/0021.nt",
|
110
|
-
"spec/rdfa-triples/0023.nt",
|
111
|
-
"spec/rdfa-triples/0025.nt",
|
112
|
-
"spec/rdfa-triples/0026.nt",
|
113
|
-
"spec/rdfa-triples/0027.nt",
|
114
|
-
"spec/rdfa-triples/0029.nt",
|
115
|
-
"spec/rdfa-triples/0030.nt",
|
116
|
-
"spec/rdfa-triples/0031.nt",
|
117
|
-
"spec/rdfa-triples/0032.nt",
|
118
|
-
"spec/rdfa-triples/0033.nt",
|
119
|
-
"spec/rdfa-triples/0034.nt",
|
120
|
-
"spec/rdfa-triples/0035.nt",
|
121
|
-
"spec/rdfa-triples/0036.nt",
|
122
|
-
"spec/rdfa-triples/0037.nt",
|
123
|
-
"spec/rdfa-triples/0038.nt",
|
124
|
-
"spec/rdfa-triples/0039.nt",
|
125
|
-
"spec/rdfa-triples/0040.nt",
|
126
|
-
"spec/rdfa-triples/0041.nt",
|
127
|
-
"spec/rdfa-triples/0042.nt",
|
128
|
-
"spec/rdfa-triples/0046.nt",
|
129
|
-
"spec/rdfa-triples/0047.nt",
|
130
|
-
"spec/rdfa-triples/0048.nt",
|
131
|
-
"spec/rdfa-triples/0049.nt",
|
132
|
-
"spec/rdfa-triples/0050.nt",
|
133
|
-
"spec/rdfa-triples/0051.nt",
|
134
|
-
"spec/rdfa-triples/0052.nt",
|
135
|
-
"spec/rdfa-triples/0053.nt",
|
136
|
-
"spec/rdfa-triples/0054.nt",
|
137
|
-
"spec/rdfa-triples/0055.nt",
|
138
|
-
"spec/rdfa-triples/0056.nt",
|
139
|
-
"spec/rdfa-triples/0057.nt",
|
140
|
-
"spec/rdfa-triples/0058.nt",
|
141
|
-
"spec/rdfa-triples/0059.nt",
|
142
|
-
"spec/rdfa-triples/0060.nt",
|
143
|
-
"spec/rdfa-triples/0061.nt",
|
144
|
-
"spec/rdfa-triples/0062.nt",
|
145
|
-
"spec/rdfa-triples/0063.nt",
|
146
|
-
"spec/rdfa-triples/0064.nt",
|
147
|
-
"spec/rdfa-triples/0065.nt",
|
148
|
-
"spec/rdfa-triples/0066.nt",
|
149
|
-
"spec/rdfa-triples/0067.nt",
|
150
|
-
"spec/rdfa-triples/0068.nt",
|
151
|
-
"spec/rdfa-triples/0069.nt",
|
152
|
-
"spec/rdfa-triples/0070.nt",
|
153
|
-
"spec/rdfa-triples/0071.nt",
|
154
|
-
"spec/rdfa-triples/0072.nt",
|
155
|
-
"spec/rdfa-triples/0073.nt",
|
156
|
-
"spec/rdfa-triples/0074.nt",
|
157
|
-
"spec/rdfa-triples/0075.nt",
|
158
|
-
"spec/rdfa-triples/0076.nt",
|
159
|
-
"spec/rdfa-triples/0077.nt",
|
160
|
-
"spec/rdfa-triples/0078.nt",
|
161
|
-
"spec/rdfa-triples/0079.nt",
|
162
|
-
"spec/rdfa-triples/0080.nt",
|
163
|
-
"spec/rdfa-triples/0081.nt",
|
164
|
-
"spec/rdfa-triples/0082.nt",
|
165
|
-
"spec/rdfa-triples/0083.nt",
|
166
|
-
"spec/rdfa-triples/0084.nt",
|
167
|
-
"spec/rdfa-triples/0085.nt",
|
168
|
-
"spec/rdfa-triples/0086.nt",
|
169
|
-
"spec/rdfa-triples/0087.nt",
|
170
|
-
"spec/rdfa-triples/0088.nt",
|
171
|
-
"spec/rdfa-triples/0089.nt",
|
172
|
-
"spec/rdfa-triples/0090.nt",
|
173
|
-
"spec/rdfa-triples/0091.nt",
|
174
|
-
"spec/rdfa-triples/0092.nt",
|
175
|
-
"spec/rdfa-triples/0093.nt",
|
176
|
-
"spec/rdfa-triples/0094.nt",
|
177
|
-
"spec/rdfa-triples/0099.nt",
|
178
|
-
"spec/rdfa-triples/0100.nt",
|
179
|
-
"spec/rdfa-triples/0101.nt",
|
180
|
-
"spec/rdfa-triples/0102.nt",
|
181
|
-
"spec/rdfa-triples/0103.nt",
|
182
|
-
"spec/rdfa-triples/0104.nt",
|
183
|
-
"spec/rdfa-triples/0105.nt",
|
184
|
-
"spec/rdfa-triples/0106.nt",
|
185
|
-
"spec/rdfa-triples/0107.nt",
|
186
|
-
"spec/rdfa-triples/0108.nt",
|
187
|
-
"spec/rdfa-triples/0109.nt",
|
188
|
-
"spec/rdfa-triples/0110.nt",
|
189
|
-
"spec/rdfa-triples/0111.nt",
|
190
|
-
"spec/rdfa-triples/0112.nt",
|
191
|
-
"spec/rdfa-triples/0113.nt",
|
192
|
-
"spec/rdfa-triples/0114.nt",
|
193
|
-
"spec/rdfa-triples/0115.nt",
|
194
|
-
"spec/rdfa-triples/0116.nt",
|
195
|
-
"spec/rdfa-triples/0117.nt",
|
196
|
-
"spec/rdfa-triples/0118.nt",
|
197
|
-
"spec/rdfa-triples/0119.nt",
|
198
|
-
"spec/rdfa-triples/0120.nt",
|
199
|
-
"spec/rdfa-triples/0121.nt",
|
200
|
-
"spec/rdfa-triples/0122.nt",
|
201
|
-
"spec/rdfa-triples/0123.nt",
|
202
|
-
"spec/rdfa-triples/0124.nt",
|
203
|
-
"spec/rdfa-triples/0125.nt",
|
204
|
-
"spec/rdfa-triples/0126.nt",
|
205
|
-
"spec/rdfa-triples/1001.nt",
|
206
92
|
"spec/rdfa_helper.rb",
|
207
93
|
"spec/rdfa_parser_spec.rb",
|
208
94
|
"spec/rdfcore/.gitignore",
|
@@ -848,7 +734,8 @@ Gem::Specification.new do |s|
|
|
848
734
|
s.add_runtime_dependency(%q<nokogiri>, [">= 1.4.3"])
|
849
735
|
s.add_runtime_dependency(%q<builder>, [">= 2.1.2"])
|
850
736
|
s.add_development_dependency(%q<rspec>, [">= 2.1.0"])
|
851
|
-
s.add_development_dependency(%q<activesupport>, ["
|
737
|
+
s.add_development_dependency(%q<activesupport>, ["~> 2.3.8"])
|
738
|
+
s.add_development_dependency(%q<activerecord>, ["~> 2.3.8"])
|
852
739
|
s.add_development_dependency(%q<yard>, [">= 0"])
|
853
740
|
else
|
854
741
|
s.add_dependency(%q<addressable>, [">= 2.2.0"])
|
@@ -856,7 +743,8 @@ Gem::Specification.new do |s|
|
|
856
743
|
s.add_dependency(%q<nokogiri>, [">= 1.4.3"])
|
857
744
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
858
745
|
s.add_dependency(%q<rspec>, [">= 2.1.0"])
|
859
|
-
s.add_dependency(%q<activesupport>, ["
|
746
|
+
s.add_dependency(%q<activesupport>, ["~> 2.3.8"])
|
747
|
+
s.add_dependency(%q<activerecord>, ["~> 2.3.8"])
|
860
748
|
s.add_dependency(%q<yard>, [">= 0"])
|
861
749
|
end
|
862
750
|
else
|
@@ -865,7 +753,8 @@ Gem::Specification.new do |s|
|
|
865
753
|
s.add_dependency(%q<nokogiri>, [">= 1.4.3"])
|
866
754
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
867
755
|
s.add_dependency(%q<rspec>, [">= 2.1.0"])
|
868
|
-
s.add_dependency(%q<activesupport>, ["
|
756
|
+
s.add_dependency(%q<activesupport>, ["~> 2.3.8"])
|
757
|
+
s.add_dependency(%q<activerecord>, ["~> 2.3.8"])
|
869
758
|
s.add_dependency(%q<yard>, [">= 0"])
|
870
759
|
end
|
871
760
|
end
|