active-triples 0.10.1 → 0.10.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES.md +9 -0
- data/active-triples.gemspec +0 -1
- data/lib/active_triples/configurable.rb +0 -2
- data/lib/active_triples/persistence_strategies/persistence_strategy.rb +0 -6
- data/lib/active_triples/rdf_source.rb +53 -24
- data/lib/active_triples/resource.rb +0 -2
- data/lib/active_triples/version.rb +1 -1
- data/spec/active_triples/undefined_property_error_spec.rb +15 -0
- data/spec/active_triples/value_error_spec.rb +11 -0
- metadata +3 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81641abcbc05748cde5355e096ae5707b933247d
|
4
|
+
data.tar.gz: 8700dd892403ce3907494e0ed4ab88375b914ccc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 210be0186ab5dc6e88714b1be1b789662f83246333289cfd3408ae831ad17b3032a037ba13b1068453fdca0eddb110d73fe61d4babf0fb1e76480c4d7670ea2c
|
7
|
+
data.tar.gz: 7ed12d5c4348d46c6e3f70874e3067292e7ddda3edd63be388ab94b0a9c2abf6ce2e1a1c211dfbafdb598bd3e4a9a7c00aed109020d5a174186c685acbef3048
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
0.10.2
|
2
|
+
----
|
3
|
+
- Backports several performance optimizations from the upcoming 0.11.x
|
4
|
+
release series.
|
5
|
+
- Uses `#query` to find unregistered predicates, avoiding iterating through
|
6
|
+
all statements.
|
7
|
+
- Uses a transaction to batch commit changes when calling `#set_subject!`
|
8
|
+
- Removes the `deprecation` gem as a runtime dependency
|
9
|
+
|
1
10
|
0.10.1
|
2
11
|
----
|
3
12
|
- Remove dependency on the `linkeddata` metagem
|
data/active-triples.gemspec
CHANGED
@@ -17,7 +17,6 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.add_dependency 'rdf', '~> 2.0', '>= 2.0.2'
|
18
18
|
s.add_dependency 'rdf-vocab'
|
19
19
|
s.add_dependency 'activemodel', '>= 3.0.0'
|
20
|
-
s.add_dependency 'deprecation', '~> 1.0'
|
21
20
|
s.add_dependency 'activesupport', '>= 3.0.0'
|
22
21
|
|
23
22
|
s.add_development_dependency 'rdoc'
|
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require 'deprecation'
|
3
2
|
require 'active_support/core_ext/array/wrap'
|
4
3
|
|
5
4
|
module ActiveTriples
|
@@ -15,7 +14,6 @@ module ActiveTriples
|
|
15
14
|
#
|
16
15
|
# Available properties are base_uri, rdf_label, type, and repository
|
17
16
|
module Configurable
|
18
|
-
extend Deprecation
|
19
17
|
def base_uri
|
20
18
|
configuration[:base_uri]
|
21
19
|
end
|
@@ -25,12 +25,6 @@ module ActiveTriples
|
|
25
25
|
def destroy(&block)
|
26
26
|
yield if block_given?
|
27
27
|
|
28
|
-
# Provide a warning for strategies relying on #destroy to clear the resource
|
29
|
-
if defined? obj
|
30
|
-
warn "DEPRECATION WARNING: #destroy implementations must now explicitly call 'source.clear'"
|
31
|
-
obj.clear
|
32
|
-
end
|
33
|
-
|
34
28
|
persist!
|
35
29
|
@destroyed = true
|
36
30
|
end
|
@@ -92,14 +92,15 @@ module ActiveTriples
|
|
92
92
|
def initialize(*args, &block)
|
93
93
|
resource_uri = args.shift unless args.first.is_a?(Hash)
|
94
94
|
@rdf_subject = get_uri(resource_uri) if resource_uri
|
95
|
+
|
95
96
|
unless args.first.is_a?(Hash) || args.empty?
|
96
97
|
set_persistence_strategy(ParentStrategy)
|
97
98
|
persistence_strategy.parent = args.shift
|
98
99
|
else
|
99
100
|
set_persistence_strategy(RepositoryStrategy)
|
100
101
|
end
|
101
|
-
@graph = RDF::Graph.new(*args, &block)
|
102
102
|
|
103
|
+
@graph = RDF::Graph.new(*args, &block)
|
103
104
|
reload
|
104
105
|
|
105
106
|
# Append type to graph if necessary.
|
@@ -496,32 +497,28 @@ module ActiveTriples
|
|
496
497
|
##
|
497
498
|
# Set a new rdf_subject for the resource.
|
498
499
|
#
|
499
|
-
# This raises an error if the current subject is not a blank node,
|
500
|
-
# and returns false if it can't figure out how to make a URI from
|
501
|
-
# the param. Otherwise it creates a URI for the resource and
|
502
|
-
# rebuilds the graph with the updated URI.
|
503
|
-
#
|
504
500
|
# Will try to build a uri as an extension of the class's base_uri
|
505
501
|
# if appropriate.
|
506
502
|
#
|
507
|
-
# @param
|
503
|
+
# @param [#to_uri, #to_s] uri_or_str the uri or string to use
|
504
|
+
# @return [void]
|
505
|
+
#
|
506
|
+
# @raise if the current subject is not a blank node,
|
507
|
+
# and returns false if it can't figure out how to make a URI from
|
508
|
+
# the param. Otherwise it creates a URI for the resource and
|
509
|
+
# rebuilds the graph with the updated URI.
|
508
510
|
def set_subject!(uri_or_str)
|
509
|
-
raise "Refusing update URI when one is already assigned!" unless
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
elsif statement.object == old_subject
|
521
|
-
delete(statement)
|
522
|
-
self << RDF::Statement.new(statement.subject, statement.predicate, rdf_subject)
|
523
|
-
end
|
524
|
-
end
|
511
|
+
raise "Refusing update URI when one is already assigned!" unless
|
512
|
+
node? || rdf_subject == RDF::URI(nil)
|
513
|
+
|
514
|
+
return false if uri_or_str.nil? ||
|
515
|
+
(uri_or_str.to_s.empty? &&
|
516
|
+
!uri_or_str.kind_of?(RDF::URI))
|
517
|
+
|
518
|
+
new_subject = get_uri(uri_or_str)
|
519
|
+
rewrite_statement_uris(rdf_subject, new_subject)
|
520
|
+
|
521
|
+
@rdf_subject = new_subject
|
525
522
|
end
|
526
523
|
|
527
524
|
##
|
@@ -589,7 +586,12 @@ module ActiveTriples
|
|
589
586
|
registered_preds = registered_predicates
|
590
587
|
registered_preds << RDF.type
|
591
588
|
unregistered_preds = []
|
592
|
-
|
589
|
+
|
590
|
+
query(subject: rdf_subject) do |stmt|
|
591
|
+
unregistered_preds << stmt.predicate unless
|
592
|
+
registered_preds.include? stmt.predicate
|
593
|
+
end
|
594
|
+
|
593
595
|
unregistered_preds
|
594
596
|
end
|
595
597
|
|
@@ -601,6 +603,33 @@ module ActiveTriples
|
|
601
603
|
RDF::Vocab::SKOS.hiddenLabel]
|
602
604
|
end
|
603
605
|
|
606
|
+
##
|
607
|
+
# Rewrites the subject and object of each statement containing
|
608
|
+
# `old_subject` in either position. Used when setting the subject to
|
609
|
+
# remove the placeholder blank node subjects.
|
610
|
+
#
|
611
|
+
# @param [RDF::Term] old_subject
|
612
|
+
# @param [RDF::Term] new_subject
|
613
|
+
# @return [void]
|
614
|
+
def rewrite_statement_uris(old_subject, new_subject)
|
615
|
+
graph.transaction(mutable: true) do |tx|
|
616
|
+
tx.query(subject: old_subject).each do |st|
|
617
|
+
tx.delete(st)
|
618
|
+
|
619
|
+
st.subject = new_subject
|
620
|
+
st.object = new_subject if st.object == old_subject
|
621
|
+
tx.insert(st)
|
622
|
+
end
|
623
|
+
|
624
|
+
tx.query(object: old_subject).each do |st|
|
625
|
+
tx.delete(st)
|
626
|
+
|
627
|
+
st.object = new_subject
|
628
|
+
tx.insert(st)
|
629
|
+
end
|
630
|
+
end
|
631
|
+
end
|
632
|
+
|
604
633
|
##
|
605
634
|
# Takes a URI or String and aggressively tries to convert it into
|
606
635
|
# an RDF term. If a String is given, first tries to interpret it
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
describe ActiveTriples::UndefinedPropertyError do
|
5
|
+
subject { described_class.new(property, klass) }
|
6
|
+
|
7
|
+
let(:property) { :a_property }
|
8
|
+
let(:klass) { :a_class }
|
9
|
+
|
10
|
+
it { expect(subject.message).to be_a String }
|
11
|
+
|
12
|
+
it { expect(subject.property).to eq property }
|
13
|
+
it { expect(subject.klass).to eq klass }
|
14
|
+
end
|
15
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
describe ActiveTriples::Relation::ValueError do
|
5
|
+
subject { described_class.new(value) }
|
6
|
+
|
7
|
+
let(:value) { :a_value }
|
8
|
+
|
9
|
+
it { expect(subject.message).to be_a String }
|
10
|
+
it { expect(subject.value).to eq value }
|
11
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active-triples
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Johnson
|
@@ -59,20 +59,6 @@ dependencies:
|
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 3.0.0
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: deprecation
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '1.0'
|
69
|
-
type: :runtime
|
70
|
-
prerelease: false
|
71
|
-
version_requirements: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '1.0'
|
76
62
|
- !ruby/object:Gem::Dependency
|
77
63
|
name: activesupport
|
78
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -292,6 +278,8 @@ files:
|
|
292
278
|
- spec/active_triples/repositories_spec.rb
|
293
279
|
- spec/active_triples/resource_spec.rb
|
294
280
|
- spec/active_triples/schema_spec.rb
|
281
|
+
- spec/active_triples/undefined_property_error_spec.rb
|
282
|
+
- spec/active_triples/value_error_spec.rb
|
295
283
|
- spec/active_triples_spec.rb
|
296
284
|
- spec/integration/dummies/dummy_resource_a.rb
|
297
285
|
- spec/integration/dummies/dummy_resource_b.rb
|