tripod 0.0.4 → 0.0.5
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/README.md +6 -4
- data/lib/tripod/attributes.rb +4 -0
- data/lib/tripod/finders.rb +22 -19
- data/lib/tripod/version.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +16 -16
data/README.md
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
|
3
3
|
ActiveModel-style Ruby ORM for RDF Linked Data. Works with SPARQL 1.1 HTTP endpoints.
|
4
4
|
|
5
|
+
* [ActiveModel](https://github.com/rails/rails/tree/master/activemodel)-compliant interface.
|
6
|
+
* Inspired by [Durran Jordan's](https://github.com/durran) [Mongoid](http://mongoid.org/en/mongoid/) ORM for [MongoDB](http://www.mongodb.org/), and [Ben Lavender's](https://github.com/bhuga) RDF ORM, [Spira](https://github.com/ruby-rdf/spira).
|
7
|
+
* Uses [Ruby-RDF](https://github.com/ruby-rdf/rdf) to manage the data internally.
|
8
|
+
|
9
|
+
__Warning: Work still in progress / experimental. Not production ready!__
|
10
|
+
|
5
11
|
## Quick start, for using in a rails app.
|
6
12
|
|
7
13
|
1. Install the gem:
|
@@ -62,8 +68,4 @@ ActiveModel-style Ruby ORM for RDF Linked Data. Works with SPARQL 1.1 HTTP endpo
|
|
62
68
|
|
63
69
|
[Full Documentation](http://rubydoc.info/github/Swirrl/tripod/master/frames)
|
64
70
|
|
65
|
-
__Warning: Work still in progress / experimental. Not production ready!__
|
66
|
-
|
67
|
-
Inspired by [Durran Jordan's](https://github.com/durran) [Mongoid](http://mongoid.org/en/mongoid/) ORM for [MongoDB](http://www.mongodb.org/), and [Ben Lavender's](https://github.com/bhuga) RDF ORM, [Spira](https://github.com/ruby-rdf/spira).
|
68
|
-
|
69
71
|
Copyright (c) 2012 [Swirrl IT Limited](http://swirrl.com). Released under MIT License
|
data/lib/tripod/attributes.rb
CHANGED
@@ -41,6 +41,8 @@ module Tripod::Attributes
|
|
41
41
|
# @param [ String, RDF::URI ] predicate_uri The name of the attribute to update.
|
42
42
|
# @param [ Object, Array ] value The values to set for the attribute. Can be an array, or single item. They should compatible with RDF::Terms
|
43
43
|
def write_attribute(predicate_uri, objects)
|
44
|
+
raise Tripod::Errors::UriNotSet.new() unless @uri
|
45
|
+
|
44
46
|
# remove existing
|
45
47
|
remove_attribute(predicate_uri)
|
46
48
|
|
@@ -64,6 +66,8 @@ module Tripod::Attributes
|
|
64
66
|
# @param [ String, RDF::URI ] predicate_uri The uri of the attribute to update.
|
65
67
|
# @param [ Object ] value The values to append for the attribute. Should compatible with RDF::Terms
|
66
68
|
def append_to_attribute(predicate_uri, object )
|
69
|
+
raise Tripod::Errors::UriNotSet.new() unless @uri
|
70
|
+
|
67
71
|
@repository << RDF::Statement.new(@uri, RDF::URI.new(predicate_uri.to_s), object)
|
68
72
|
end
|
69
73
|
|
data/lib/tripod/finders.rb
CHANGED
@@ -66,29 +66,32 @@ module Tripod::Finders
|
|
66
66
|
data[ r[uri_variable]["value"] ] = r[graph_variable]["value"]
|
67
67
|
end
|
68
68
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
69
|
+
resources = []
|
70
|
+
|
71
|
+
if data.keys.length > 0
|
72
|
+
|
73
|
+
uris_sparql_str = data.keys.map{ |u| "<#{u}>" }.join(" ")
|
74
|
+
|
75
|
+
# 2. Do a big describe statement, and read the results into an in-memory repo
|
76
|
+
triples = Tripod::SparqlClient::Query::describe("DESCRIBE #{uris_sparql_str}")
|
77
|
+
triples_repository = RDF::Repository.new()
|
78
|
+
RDF::Reader.for(:ntriples).new(triples) do |reader|
|
79
|
+
reader.each_statement do |statement|
|
80
|
+
triples_repository << statement
|
81
|
+
end
|
77
82
|
end
|
78
|
-
end
|
79
83
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
84
|
+
# 3. for each of our uris, make a resource, with a graph of triples for that uri from the in-mem repo
|
85
|
+
data.each_pair do |u,g|
|
86
|
+
r = self.new(u,g)
|
87
|
+
data_graph = RDF::Graph.new
|
88
|
+
triples_repository.query( [RDF::URI.new(u), :predicate, :object] ) do |statement|
|
89
|
+
data_graph << statement
|
90
|
+
end
|
91
|
+
r.hydrate!(data_graph)
|
92
|
+
resources << r
|
87
93
|
end
|
88
|
-
r.hydrate!(data_graph)
|
89
|
-
resources << r
|
90
94
|
end
|
91
|
-
|
92
95
|
resources
|
93
96
|
|
94
97
|
end
|
data/lib/tripod/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -11,7 +11,7 @@ RSpec.configure do |config|
|
|
11
11
|
config.mock_with :rspec
|
12
12
|
|
13
13
|
config.before(:each) do
|
14
|
-
# delete from all
|
14
|
+
# delete from all graphs.
|
15
15
|
Tripod::SparqlClient::Update.update('
|
16
16
|
# delete from default graph:
|
17
17
|
DELETE {?s ?p ?o} WHERE {?s ?p ?o};
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tripod
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
16
|
-
requirement: &
|
16
|
+
requirement: &70239804187140 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70239804187140
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activemodel
|
27
|
-
requirement: &
|
27
|
+
requirement: &70239804186600 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '3.1'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70239804186600
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: equivalent-xml
|
38
|
-
requirement: &
|
38
|
+
requirement: &70239804186180 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70239804186180
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rdf
|
49
|
-
requirement: &
|
49
|
+
requirement: &70239804185640 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0.3'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70239804185640
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rdf-rdfxml
|
60
|
-
requirement: &
|
60
|
+
requirement: &70239804185220 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70239804185220
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rdf-n3
|
71
|
-
requirement: &
|
71
|
+
requirement: &70239804184760 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70239804184760
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rdf-json
|
82
|
-
requirement: &
|
82
|
+
requirement: &70239804184340 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70239804184340
|
91
91
|
description: RDF ruby ORM
|
92
92
|
email:
|
93
93
|
- ric@swirrl.com
|