ld4l-ore_rdf 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +25 -0
- data/.travis.yml +12 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +14 -0
- data/README.md +171 -0
- data/Rakefile +2 -0
- data/ld4l-ore_rdf.gemspec +45 -0
- data/lib/ld4l/ore_rdf/configuration.rb +41 -0
- data/lib/ld4l/ore_rdf/models/aggregation.rb +50 -0
- data/lib/ld4l/ore_rdf/models/aggregation_resource.rb +98 -0
- data/lib/ld4l/ore_rdf/models/proxy_resource.rb +54 -0
- data/lib/ld4l/ore_rdf/services/aggregation/add_aggregated_resource.rb +49 -0
- data/lib/ld4l/ore_rdf/services/aggregation/add_aggregated_resources.rb +28 -0
- data/lib/ld4l/ore_rdf/services/aggregation/create.rb +39 -0
- data/lib/ld4l/ore_rdf/services/aggregation/destroy.rb +47 -0
- data/lib/ld4l/ore_rdf/services/aggregation/destroy_with_id.rb +22 -0
- data/lib/ld4l/ore_rdf/services/aggregation/find.rb +72 -0
- data/lib/ld4l/ore_rdf/services/aggregation/persist.rb +34 -0
- data/lib/ld4l/ore_rdf/services/aggregation/resume.rb +30 -0
- data/lib/ld4l/ore_rdf/services/proxy/create.rb +64 -0
- data/lib/ld4l/ore_rdf/services/proxy/find.rb +93 -0
- data/lib/ld4l/ore_rdf/version.rb +5 -0
- data/lib/ld4l/ore_rdf/vocab/co.rb +27 -0
- data/lib/ld4l/ore_rdf/vocab/dcterms.rb +6 -0
- data/lib/ld4l/ore_rdf/vocab/iana.rb +9 -0
- data/lib/ld4l/ore_rdf/vocab/ore.rb +16 -0
- data/lib/ld4l/ore_rdf.rb +76 -0
- data/spec/ld4l/ore_rdf/configuration_spec.rb +174 -0
- data/spec/ld4l/ore_rdf/models/aggregation_resource_spec.rb +830 -0
- data/spec/ld4l/ore_rdf/models/aggregation_spec.rb +9 -0
- data/spec/ld4l/ore_rdf/models/proxy_resource_spec.rb +690 -0
- data/spec/ld4l/ore_rdf/services/aggregation/add_aggregated_resource_spec.rb +36 -0
- data/spec/ld4l/ore_rdf/services/aggregation/add_aggregated_resources_spec.rb +78 -0
- data/spec/ld4l/ore_rdf/services/aggregation/create_spec.rb +62 -0
- data/spec/ld4l/ore_rdf/services/aggregation/destroy_spec.rb +169 -0
- data/spec/ld4l/ore_rdf/services/aggregation/find_spec.rb +198 -0
- data/spec/ld4l/ore_rdf/services/aggregation/persist_spec.rb +13 -0
- data/spec/ld4l/ore_rdf/services/aggregation/resume_spec.rb +46 -0
- data/spec/ld4l/ore_rdf/services/proxy/create_spec.rb +143 -0
- data/spec/ld4l/ore_rdf/services/proxy/find_spec.rb +138 -0
- data/spec/ld4l/ore_rdf_spec.rb +53 -0
- data/spec/spec_helper.rb +23 -0
- metadata +259 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 42f818dcf199be0185f9263e59b29021005da3ff
|
4
|
+
data.tar.gz: ee3b57a06cf31f8cff3960671084125dc36c97c0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4d14dc0c0b6fd35c6dfe8cf219f4fb76634c9e068e6d5cb1de12a1b85aabd309460ec6d29c8a5f0940f5c8935fd983ab61f4f422df04695b0f12dd252d060a7b
|
7
|
+
data.tar.gz: 3138b70ced75abfd2cda84bef5ad24acfa5a3f2c58ab01828397234669533261574890c67b0a47d0708544d832d4f6a6465afc7effbe19213cf3f8bfe3697b21
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service_name: travis-ci
|
data/.gitignore
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
*.bundle
|
19
|
+
*.so
|
20
|
+
*.o
|
21
|
+
*.a
|
22
|
+
mkmf.log
|
23
|
+
.idea
|
24
|
+
.ruby-gemset
|
25
|
+
.ruby-version
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
Copyright (c) 2014 Cornell University
|
2
|
+
|
3
|
+
##########################################################################
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
data/README.md
ADDED
@@ -0,0 +1,171 @@
|
|
1
|
+
#LD4L::OreRDF
|
2
|
+
|
3
|
+
[![Build Status](https://travis-ci.org/ld4l/ore_rdf.png?branch=rework_with_service_objects)](https://travis-ci.org/ld4l/ore_rdf)
|
4
|
+
[![Coverage Status](https://coveralls.io/repos/ld4l/ore_rdf/badge.png?branch=rework_with_service_objects)](https://coveralls.io/r/ld4l/ore_rdf?branch=rework_with_service_objects)
|
5
|
+
[![Gem Version](https://badge.fury.io/rb/ld4l-ore_rdf.svg)](http://badge.fury.io/rb/ld4l-ore_rdf)
|
6
|
+
[![Dependency Status](https://www.versioneye.com/ruby/ld4l-ore_rdf/0.0.3/badge.svg)](https://www.versioneye.com/ruby/ld4l-ore_rdf/0.0.3)
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
LD4L ORE RDF provides tools for modeling list triples based on the ORE ontology and persisting to a triplestore.
|
11
|
+
|
12
|
+
|
13
|
+
## Installation
|
14
|
+
|
15
|
+
Temporary get the gem from github until the gem is released publicly.
|
16
|
+
|
17
|
+
Add this line to your application's Gemfile:
|
18
|
+
|
19
|
+
gem 'ld4l-ore_rdf'
|
20
|
+
|
21
|
+
|
22
|
+
And then execute:
|
23
|
+
|
24
|
+
$ bundle install
|
25
|
+
|
26
|
+
Or install it yourself as:
|
27
|
+
|
28
|
+
$ gem install ld4l-ore_rdf
|
29
|
+
|
30
|
+
|
31
|
+
## Usage
|
32
|
+
|
33
|
+
**Caveat:** This gem is part of the LD4L Project and is being used in that context. There is no guarantee that the
|
34
|
+
code will work in a usable way outside of its use in LD4L Use Cases.
|
35
|
+
|
36
|
+
### Examples
|
37
|
+
|
38
|
+
*Setup required for all examples.*
|
39
|
+
```
|
40
|
+
require 'ld4l/ore_rdf'
|
41
|
+
|
42
|
+
# create an in-memory repository
|
43
|
+
ActiveTriples::Repositories.add_repository :default, RDF::Repository.new
|
44
|
+
|
45
|
+
p = LD4L::FoafRDF::Person.new('p4')
|
46
|
+
```
|
47
|
+
|
48
|
+
#### Example: Aggregation with items individually
|
49
|
+
```
|
50
|
+
agg10 = LD4L::OreRDF::CreateAggregation.call( :id=>'agg10', :title=>'My Resources', :description=>'Resources that I like', :owner=>p )
|
51
|
+
|
52
|
+
LD4L::OreRDF::AddAggregatedResource.call( agg10,'http://exmple.org/resource_1')
|
53
|
+
LD4L::OreRDF::AddAggregatedResource.call( agg10'http://exmple.org/resource_2')
|
54
|
+
LD4L::OreRDF::AddAggregatedResource.call( agg10,'http://exmple.org/resource_3')
|
55
|
+
|
56
|
+
LD4L::OreRDF::PersistAggregation.call(agg10)
|
57
|
+
|
58
|
+
puts agg10.dump :ttl
|
59
|
+
|
60
|
+
# To resume the aggregation at a later time, use...
|
61
|
+
agg = LD4L::OreRDF::ResumeAggregation.call( 'agg10' )
|
62
|
+
```
|
63
|
+
|
64
|
+
#### Example: Aggregation with items as array
|
65
|
+
```
|
66
|
+
agg11 = LD4L::OreRDF::CreateAggregation.call( :id=>'agg11', :title=>'More Resources', :description=>'More resources that I like', :owner=>p )
|
67
|
+
|
68
|
+
resources = [ 'http://exmple.org/resource_5', 'http://exmple.org/resource_6', 'http://exmple.org/resource_7' ]
|
69
|
+
LD4L::OreRDF::AddAggregatedResources.call( agg11,resources)
|
70
|
+
|
71
|
+
LD4L::OreRDF::PersistAggregation.call(agg11)
|
72
|
+
|
73
|
+
puts agg11.dump :ttl
|
74
|
+
|
75
|
+
# To resume the aggregation at a later time, use...
|
76
|
+
agg = LD4L::OreRDF::ResumeAggregation.call( 'agg10' )
|
77
|
+
```
|
78
|
+
|
79
|
+
#### Example: Find all aggregations
|
80
|
+
```
|
81
|
+
# Find all and return only the URIs for each aggregation
|
82
|
+
aggregation_uris = LD4L::OreRDF::FindAggregations.call
|
83
|
+
|
84
|
+
# Find all and return title and description
|
85
|
+
aggregation_properties = LD4L::OreRDF::FindAggregations.call(
|
86
|
+
:properties => { :title => RDF::DC.title, :description => RDF::DC.description } )
|
87
|
+
|
88
|
+
```
|
89
|
+
|
90
|
+
|
91
|
+
### Configurations
|
92
|
+
|
93
|
+
* base_uri - base URI used when new resources are created (default="http://localhost/")
|
94
|
+
* localname_minter - minter function to use for creating unique local names (default=nil which uses default minter in active_triples-local_name gem)
|
95
|
+
|
96
|
+
*Setup for all examples.*
|
97
|
+
|
98
|
+
* Restart your interactive session (e.g. irb, pry).
|
99
|
+
* Use the Setup for all examples in main Examples section above.
|
100
|
+
|
101
|
+
*Example usage using configured base_uri and default localname_minter.*
|
102
|
+
```
|
103
|
+
LD4L::OreRDF.configure do |config|
|
104
|
+
config.base_uri = "http://example.org/"
|
105
|
+
end
|
106
|
+
|
107
|
+
a = LD4L::OreRDF::AggregationResource.new(ActiveTriples::LocalName::Minter.generate_local_name(
|
108
|
+
LD4L::OreRDF::AggregationResource, 10, {:prefix=>'ag'} ))
|
109
|
+
|
110
|
+
puts a.dump :ttl
|
111
|
+
```
|
112
|
+
NOTE: If base_uri is not used, you need to restart your interactive environment (e.g. irb, pry). Once the
|
113
|
+
Aggregation class is instantiated the first time, the base_uri for the class is set. If you ran
|
114
|
+
through the main Examples, the base_uri was set to the default base_uri.
|
115
|
+
|
116
|
+
|
117
|
+
*Example triples created for an aggregation with configured base_uri and default minter.*
|
118
|
+
```
|
119
|
+
<http://example.org/ag45c9c85b-25af-4c52-96a4-cf0d8b70a768> a <http://www.openarchives.org/ore/terms/Aggregation> .
|
120
|
+
```
|
121
|
+
|
122
|
+
*Example usage using configured base_uri and configured localname_minter.*
|
123
|
+
```
|
124
|
+
LD4L::OreRDF.configure do |config|
|
125
|
+
config.base_uri = "http://example.org/"
|
126
|
+
config.localname_minter = lambda { |prefix=""| prefix+'_configured_'+SecureRandom.uuid }
|
127
|
+
end
|
128
|
+
|
129
|
+
a = LD4L::OreRDF::AggregationResource.new(ActiveTriples::LocalName::Minter.generate_local_name(
|
130
|
+
LD4L::OreRDF::AggregationResource, 10, 'ag',
|
131
|
+
&LD4L::OreRDF.configuration.localname_minter ))
|
132
|
+
|
133
|
+
puts a.dump :ttl
|
134
|
+
```
|
135
|
+
NOTE: If base_uri is not used, you need to restart your interactive environment (e.g. irb, pry). Once the
|
136
|
+
Aggregation class is instantiated the first time, the base_uri for the class is set. If you ran
|
137
|
+
through the main Examples, the base_uri was set to the default base_uri.
|
138
|
+
|
139
|
+
|
140
|
+
*Example triples created for an aggregation with configured base_uri and configured minter.*
|
141
|
+
```
|
142
|
+
<http://example.org/ag_configured_6498ba05-8b21-4e8c-b9d4-a6d5d2180966> a <http://www.openarchives.org/ore/terms/Aggregation> .
|
143
|
+
```
|
144
|
+
|
145
|
+
|
146
|
+
### Models
|
147
|
+
|
148
|
+
The LD4L::OreRDF gem provides model definitions using the
|
149
|
+
[ActiveTriples](https://github.com/ActiveTriples/ActiveTriples) framework extension of
|
150
|
+
[ruby-rdf/rdf](https://github.com/ruby-rdf/rdf). The following models are provided:
|
151
|
+
|
152
|
+
1. LD4L::OreRDF::AggregationResource - Implements the Aggregation class in the ORE ontology.
|
153
|
+
1. LD4L::OreRDF::ProxyResource - Implements the Proxy class in the ORE ontology.
|
154
|
+
|
155
|
+
### Ontologies
|
156
|
+
|
157
|
+
The listed ontologies are used to represent the primary metadata about aggregation lists.
|
158
|
+
Other ontologies may also be used that aren't listed.
|
159
|
+
|
160
|
+
* [ORE](http://www.openarchives.org/ore/1.0/vocabulary)
|
161
|
+
* [FOAF](http://xmlns.com/foaf/spec/)
|
162
|
+
* [RDF](http://www.w3.org/TR/rdf-syntax-grammar/)
|
163
|
+
|
164
|
+
|
165
|
+
## Contributing
|
166
|
+
|
167
|
+
1. Fork it ( https://github.com/[my-github-username]/ld4l-ore_rdf/fork )
|
168
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
169
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
170
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
171
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'ld4l/ore_rdf/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "ld4l-ore_rdf"
|
8
|
+
spec.version = LD4L::OreRDF::VERSION
|
9
|
+
spec.authors = ["E. Lynette Rayle"]
|
10
|
+
spec.email = ["elr37@cornell.edu"]
|
11
|
+
spec.platform = Gem::Platform::RUBY
|
12
|
+
spec.summary = %q{ORE RDF models.}
|
13
|
+
spec.description = %q{LD4L ORE RDF provides tools for modeling list triples based on the ORE ontology and persisting to a triplestore.}
|
14
|
+
spec.homepage = "https://github.com/ld4l/ore_rdf"
|
15
|
+
spec.license = "APACHE2"
|
16
|
+
spec.required_ruby_version = '>= 1.9.3'
|
17
|
+
|
18
|
+
spec.files = `git ls-files -z`.split("\x0")
|
19
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
|
+
# spec.test_files = `git ls-files -- {spec}/*`.split("\n") # FROM ActiveTriples gemspec file
|
21
|
+
# spec.require_paths = ["lib"] # NOT IN ActiveTriples gemspec file
|
22
|
+
|
23
|
+
# spec.add_dependency('ffi', '~> 1.9.5')
|
24
|
+
spec.add_dependency('rdf', '~> 1.1')
|
25
|
+
|
26
|
+
spec.add_dependency('active-triples', '~> 0.5')
|
27
|
+
spec.add_dependency('active_triples-local_name', '~> 0.1')
|
28
|
+
spec.add_dependency('ld4l-foaf_rdf', '~> 0.0')
|
29
|
+
spec.add_dependency('doubly_linked_list', '~> 0.0')
|
30
|
+
|
31
|
+
spec.add_development_dependency('pry')
|
32
|
+
# spec.add_development_dependency('pry-byebug') # Works with ruby > 2
|
33
|
+
# spec.add_development_dependency('pry-debugger') # Works with ruby < 2
|
34
|
+
spec.add_development_dependency('rdoc')
|
35
|
+
spec.add_development_dependency('rspec')
|
36
|
+
spec.add_development_dependency('coveralls')
|
37
|
+
spec.add_development_dependency('guard-rspec')
|
38
|
+
spec.add_development_dependency('webmock')
|
39
|
+
|
40
|
+
spec.extra_rdoc_files = [
|
41
|
+
"LICENSE.txt",
|
42
|
+
"README.md"
|
43
|
+
]
|
44
|
+
end
|
45
|
+
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module LD4L
|
2
|
+
module OreRDF
|
3
|
+
class Configuration
|
4
|
+
|
5
|
+
attr_reader :base_uri
|
6
|
+
attr_reader :localname_minter
|
7
|
+
|
8
|
+
def self.default_base_uri
|
9
|
+
@default_base_uri = "http://localhost/".freeze
|
10
|
+
end
|
11
|
+
private_class_method :default_base_uri
|
12
|
+
|
13
|
+
def self.default_localname_minter
|
14
|
+
# by setting to nil, it will use the default minter in the minter gem
|
15
|
+
@default_localname_minter = nil
|
16
|
+
end
|
17
|
+
private_class_method :default_localname_minter
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
@base_uri = self.class.send(:default_base_uri)
|
21
|
+
@localname_minter = self.class.send(:default_localname_minter)
|
22
|
+
end
|
23
|
+
|
24
|
+
def base_uri=(new_base_uri)
|
25
|
+
@base_uri = new_base_uri
|
26
|
+
end
|
27
|
+
|
28
|
+
def reset_base_uri
|
29
|
+
@base_uri = self.class.send(:default_base_uri)
|
30
|
+
end
|
31
|
+
|
32
|
+
def localname_minter=(new_minter)
|
33
|
+
@localname_minter = new_minter
|
34
|
+
end
|
35
|
+
|
36
|
+
def reset_localname_minter
|
37
|
+
@localname_minter = self.class.send(:default_localname_minter)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'active_model'
|
2
|
+
module LD4L
|
3
|
+
module OreRDF
|
4
|
+
class Aggregation < DoublyLinkedList
|
5
|
+
|
6
|
+
def self.initialize
|
7
|
+
super
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize(*args)
|
11
|
+
new_args = args[0].dup unless args.empty?
|
12
|
+
unless args.empty?
|
13
|
+
new_args[:items] = new_args[:proxy_resources] if new_args.is_a?(Hash) && new_args.key?(:proxy_resources)
|
14
|
+
new_args[:list_info] = new_args[:aggregation_resource] if new_args.is_a?(Hash) && new_args.key?(:aggregation_resource)
|
15
|
+
new_args.delete(:proxy_resources)
|
16
|
+
new_args.delete(:aggregation_resource)
|
17
|
+
end
|
18
|
+
super(new_args)
|
19
|
+
end
|
20
|
+
|
21
|
+
def id
|
22
|
+
list_info.rdf_subject.to_s
|
23
|
+
end
|
24
|
+
|
25
|
+
def title
|
26
|
+
titles = list_info.title
|
27
|
+
titles.kind_of?(Array) && titles.size > 0 ? titles[0] : ""
|
28
|
+
end
|
29
|
+
|
30
|
+
def description
|
31
|
+
descriptions = list_info.description
|
32
|
+
descriptions.kind_of?(Array) && descriptions.size > 0 ? descriptions[0] : ""
|
33
|
+
end
|
34
|
+
|
35
|
+
def aggregation_resource
|
36
|
+
list_info
|
37
|
+
end
|
38
|
+
|
39
|
+
def proxy_resources
|
40
|
+
@list
|
41
|
+
end
|
42
|
+
|
43
|
+
# def self.model_name
|
44
|
+
# ActiveModel::Name.new(LD4L::OreRDF::Aggregation)
|
45
|
+
# end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
@@ -0,0 +1,98 @@
|
|
1
|
+
module LD4L
|
2
|
+
module OreRDF
|
3
|
+
class AggregationResource < ActiveTriples::Resource
|
4
|
+
|
5
|
+
class << self; attr_reader :localname_prefix end
|
6
|
+
@localname_prefix="ag"
|
7
|
+
|
8
|
+
# TODO... Can we change type from Set to List to go from unordered list to ordered list?
|
9
|
+
# TODO Should properties for ordered lists be blocked until the list is turned into an ordered list?
|
10
|
+
# TODO Can you go from an ordered list back to an unordered list?
|
11
|
+
# TODO Can you apply order to only parts of the list, or does applying order imply all items are now ordered?
|
12
|
+
# TODO If all items are now ordered, what is the process for going through all subitems and adding order information?
|
13
|
+
|
14
|
+
|
15
|
+
# TODO... items are not persisted when this class is persisted because there is not connection from this class to the items
|
16
|
+
# TODO Either the persist! method needs to be overridden to also save the items (which would also require an items attribute to hold them)
|
17
|
+
# TODO OR the item property needs to be uncommented allowing the built in functionality to save them.
|
18
|
+
# TODO DOWNSIDE: items and aggregators could get out of sync. Then which is right? Could be a problem with the first option too.
|
19
|
+
|
20
|
+
|
21
|
+
configure :type => RDFVocabularies::ORE.Aggregation, :base_uri => LD4L::OreRDF.configuration.base_uri, :repository => :default
|
22
|
+
|
23
|
+
# extended properties for LD4L implementation
|
24
|
+
property :title, :predicate => RDF::DC.title
|
25
|
+
property :description, :predicate => RDF::DC.description
|
26
|
+
property :owner, :predicate => RDFVocabularies::DCTERMS.creator, :class_name => LD4L::FoafRDF::Person
|
27
|
+
|
28
|
+
# properties from ORE.Aggregation
|
29
|
+
property :aggregates, :predicate => RDFVocabularies::ORE.aggregates # multiple values
|
30
|
+
property :first_proxy, :predicate => RDFVocabularies::IANA.first, :class_name => LD4L::OreRDF::ProxyResource
|
31
|
+
property :last_proxy, :predicate => RDFVocabularies::IANA.last, :class_name => LD4L::OreRDF::ProxyResource
|
32
|
+
|
33
|
+
|
34
|
+
# --------------------- #
|
35
|
+
# HELPER METHODS #
|
36
|
+
# --------------------- #
|
37
|
+
|
38
|
+
|
39
|
+
########### NEED TO MOVE TO SERVICE OBJECT ####################
|
40
|
+
|
41
|
+
|
42
|
+
# Returns an array the items in the aggregation.
|
43
|
+
# TODO: How to begin at start and limit to number of returned items, effectively handling ranges of data.
|
44
|
+
def get_items_content(start=nil,limit=nil)
|
45
|
+
# TODO: Stubbed to return all items.
|
46
|
+
get_values('aggregates')
|
47
|
+
end
|
48
|
+
|
49
|
+
# Returns an array of persisted LD4L::OreRDF::ProxyResource instances for the items in the`` aggregation.
|
50
|
+
def get_items(start=nil,limit=nil)
|
51
|
+
LD4L::OreRDF::ProxyResource.get_range(self, start, limit)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Get the persisted LD4L::OreRDF::ProxyResource instance that holds the content
|
55
|
+
# NOTE: Not implemented.
|
56
|
+
def find_item_with_content(content)
|
57
|
+
# TODO Stubbed - Requires definition and implementation
|
58
|
+
end
|
59
|
+
|
60
|
+
# Return the content at the specified position in an ordered collection
|
61
|
+
def get_item_content_at(position)
|
62
|
+
# TODO Stubbed - Required definition and implementation
|
63
|
+
end
|
64
|
+
|
65
|
+
# Return the LD4L::OreRDF::ProxyResource instance for the item at the specified position in an ordered collection
|
66
|
+
def get_item_at(position)
|
67
|
+
# TODO Stubbed - Required definition and implementation
|
68
|
+
end
|
69
|
+
|
70
|
+
# Determine if the content is already in the aggregation
|
71
|
+
def has_item_content?(content)
|
72
|
+
# TODO Stubbed - Requires definition and implementation
|
73
|
+
end
|
74
|
+
|
75
|
+
# Determine if an item exists at the specified position in the ordered aggregation
|
76
|
+
def has_item_at?(position)
|
77
|
+
# TODO Stubbed - Requires definition and implementation
|
78
|
+
end
|
79
|
+
|
80
|
+
# Destroy the item with the content and remove content from the aggregation
|
81
|
+
def destroy_item_with_content(content)
|
82
|
+
# TODO Stubbed - Requires definition and implementation
|
83
|
+
end
|
84
|
+
|
85
|
+
# Destroy the item at specified position and remove content from the aggregation
|
86
|
+
def destroy_item_at(position)
|
87
|
+
# TODO Stubbed - Requires definition and implementation
|
88
|
+
end
|
89
|
+
|
90
|
+
# Determine if the aggregation holds an ordered list of items
|
91
|
+
def is_ordered?
|
92
|
+
# TODO Stubbed to always return false until ordered lists are implemented
|
93
|
+
return false
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|