triannon 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +21 -16
- data/Rakefile +15 -18
- data/app/controllers/concerns/rdf_response_formats.rb +16 -14
- data/app/controllers/triannon/annotations_controller.rb +6 -6
- data/app/models/triannon/annotation.rb +5 -5
- data/app/models/triannon/annotation_ldp.rb +17 -16
- data/app/services/triannon/ldp_loader.rb +14 -4
- data/app/services/triannon/ldp_to_oa_mapper.rb +68 -59
- data/app/services/triannon/ldp_writer.rb +180 -59
- data/app/services/triannon/solr_searcher.rb +8 -8
- data/app/services/triannon/solr_writer.rb +12 -12
- data/config/jetty/etc/fedora-override-web.xml +67 -0
- data/config/routes.rb +2 -2
- data/config/triannon.yml +29 -6
- data/lib/generators/triannon/install_generator.rb +23 -3
- data/lib/rdf/triannon_vocab.rb +2 -2
- data/lib/tasks/triannon_tasks.rake +19 -5
- data/lib/triannon.rb +13 -20
- data/lib/triannon/iiif_anno_list.rb +4 -4
- data/lib/triannon/oa_graph_helper.rb +51 -0
- data/lib/triannon/version.rb +1 -1
- metadata +35 -39
- data/app/services/triannon/root_annotation_creator.rb +0 -36
- data/lib/triannon/graph.rb +0 -173
- data/lib/triannon/jsonld_context.rb +0 -13
@@ -4,9 +4,9 @@ module Triannon
|
|
4
4
|
# DO NOT CALL before anno is stored: the graph should have an assigned url for the
|
5
5
|
# @id of the root; it shouldn't be a blank node
|
6
6
|
#
|
7
|
-
# Convert a
|
7
|
+
# Convert a OA::Graph object into a Hash suitable for writing to Solr.
|
8
8
|
#
|
9
|
-
# @param [
|
9
|
+
# @param [OA::Graph] triannon_graph a populated OA::Graph object for a *stored* anno
|
10
10
|
# @return [Hash] a hash to be written to Solr, populated appropriately
|
11
11
|
def self.solr_hash(triannon_graph)
|
12
12
|
doc_hash = {}
|
@@ -18,7 +18,7 @@ module Triannon
|
|
18
18
|
doc_hash[:id] = solr_id.sub(/^\/*/, "") # remove first char slash(es) if present
|
19
19
|
|
20
20
|
# use short strings for motivation field
|
21
|
-
doc_hash[:motivation] = triannon_graph.motivated_by.map { |m| m.sub(RDF::
|
21
|
+
doc_hash[:motivation] = triannon_graph.motivated_by.map { |m| m.sub(RDF::Vocab::OA.to_s, "") }
|
22
22
|
|
23
23
|
# date field format: 1995-12-31T23:59:59Z; or w fractional seconds: 1995-12-31T23:59:59.999Z
|
24
24
|
if triannon_graph.annotated_at
|
@@ -31,11 +31,11 @@ module Triannon
|
|
31
31
|
end
|
32
32
|
#doc_hash[:annotated_by_stem] # not yet implemented
|
33
33
|
|
34
|
-
doc_hash[:target_url] = triannon_graph.predicate_urls RDF::
|
34
|
+
doc_hash[:target_url] = triannon_graph.predicate_urls RDF::Vocab::OA.hasTarget
|
35
35
|
# TODO: recognize more target types
|
36
36
|
doc_hash[:target_type] = ['external_URI'] if doc_hash[:target_url].size > 0
|
37
37
|
|
38
|
-
doc_hash[:body_url] = triannon_graph.predicate_urls RDF::
|
38
|
+
doc_hash[:body_url] = triannon_graph.predicate_urls RDF::Vocab::OA.hasBody
|
39
39
|
doc_hash[:body_type] = []
|
40
40
|
doc_hash[:body_type] << 'external_URI' if doc_hash[:body_url].size > 0
|
41
41
|
doc_hash[:body_chars_exact] = triannon_graph.body_chars.map {|bc| bc.strip}
|
@@ -57,9 +57,9 @@ module Triannon
|
|
57
57
|
@max_sleep_seconds = Triannon.config[:max_sleep_seconds] || 5
|
58
58
|
end
|
59
59
|
|
60
|
-
# Convert the
|
60
|
+
# Convert the OA::Graph to a Solr document hash, then call RSolr.add
|
61
61
|
# with the doc hash
|
62
|
-
# @param [
|
62
|
+
# @param [OA::Graph] tgraph anno represented as a OA::Graph
|
63
63
|
def write(tgraph)
|
64
64
|
doc_hash = self.class.solr_hash(tgraph) if tgraph && !tgraph.id_as_url.empty?
|
65
65
|
add(doc_hash) if doc_hash && !doc_hash.empty?
|
@@ -75,9 +75,9 @@ module Triannon
|
|
75
75
|
@logger.debug "#{exception.inspect} on Solr add attempt #{attempt_cnt} for #{id}"
|
76
76
|
if exception.kind_of?(RSolr::Error::Http)
|
77
77
|
# Note there are extra shenanigans b/c RSolr hijacks the Solr error to return RSolr Error
|
78
|
-
|
78
|
+
fail Triannon::SearchError.new("error adding doc #{id} to Solr #{doc.inspect}; #{exception.message}", exception.response[:status], exception.response[:body])
|
79
79
|
elsif exception.kind_of?(StandardError)
|
80
|
-
|
80
|
+
fail Triannon::SearchError.new("error adding doc #{id} to Solr #{doc.inspect}; #{exception.message}")
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
@@ -101,9 +101,9 @@ module Triannon
|
|
101
101
|
@logger.debug "#{exception.inspect} on Solr delete attempt #{attempt_cnt} for #{id}"
|
102
102
|
if exception.kind_of?(RSolr::Error::Http)
|
103
103
|
# Note there are extra shenanigans b/c RSolr hijacks the Solr error to return RSolr Error
|
104
|
-
|
104
|
+
fail Triannon::SearchError.new("error deleting doc #{id} from Solr: #{exception.message}", exception.response[:status], exception.response[:body])
|
105
105
|
elsif exception.kind_of?(StandardError)
|
106
|
-
|
106
|
+
fail Triannon::SearchError.new("error deleting doc #{id} from Solr: #{exception.message}")
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
@@ -120,4 +120,4 @@ module Triannon
|
|
120
120
|
end
|
121
121
|
|
122
122
|
end
|
123
|
-
end
|
123
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
|
3
|
+
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
4
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
5
|
+
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
6
|
+
version="3.0">
|
7
|
+
|
8
|
+
<display-name>Fedora 4</display-name>
|
9
|
+
|
10
|
+
<context-param>
|
11
|
+
<param-name>contextConfigLocation</param-name>
|
12
|
+
<param-value>WEB-INF/classes/spring/master.xml</param-value>
|
13
|
+
</context-param>
|
14
|
+
|
15
|
+
<listener>
|
16
|
+
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
|
17
|
+
</listener>
|
18
|
+
|
19
|
+
<servlet>
|
20
|
+
<servlet-name>jersey-servlet</servlet-name>
|
21
|
+
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
|
22
|
+
|
23
|
+
<init-param>
|
24
|
+
<param-name>javax.ws.rs.Application</param-name>
|
25
|
+
<param-value>org.fcrepo.http.commons.FedoraApplication</param-value>
|
26
|
+
</init-param>
|
27
|
+
|
28
|
+
<load-on-startup>1</load-on-startup>
|
29
|
+
<async-supported>true</async-supported>
|
30
|
+
</servlet>
|
31
|
+
|
32
|
+
<servlet-mapping>
|
33
|
+
<servlet-name>jersey-servlet</servlet-name>
|
34
|
+
<url-pattern>/rest/*</url-pattern>
|
35
|
+
|
36
|
+
</servlet-mapping>
|
37
|
+
|
38
|
+
<!-- commenting out to disable Basic-Authentication -->
|
39
|
+
<!--
|
40
|
+
<security-constraint>
|
41
|
+
<web-resource-collection>
|
42
|
+
<web-resource-name>Fedora4</web-resource-name>
|
43
|
+
<url-pattern>/*</url-pattern>
|
44
|
+
<http-method>DELETE</http-method>
|
45
|
+
<http-method>PUT</http-method>
|
46
|
+
<http-method>HEAD</http-method>
|
47
|
+
<http-method>OPTIONS</http-method>
|
48
|
+
<http-method>PATCH</http-method>
|
49
|
+
<http-method>GET</http-method>
|
50
|
+
<http-method>POST</http-method>
|
51
|
+
</web-resource-collection>
|
52
|
+
<auth-constraint>
|
53
|
+
<role-name>fedoraUser</role-name>
|
54
|
+
<role-name>fedoraAdmin</role-name>
|
55
|
+
</auth-constraint>
|
56
|
+
<user-data-constraint>
|
57
|
+
<transport-guarantee>NONE</transport-guarantee>
|
58
|
+
</user-data-constraint>
|
59
|
+
</security-constraint>
|
60
|
+
-->
|
61
|
+
|
62
|
+
<login-config>
|
63
|
+
<auth-method>BASIC</auth-method>
|
64
|
+
<realm-name>fcrepo</realm-name>
|
65
|
+
</login-config>
|
66
|
+
|
67
|
+
</web-app>
|
data/config/routes.rb
CHANGED
@@ -7,7 +7,7 @@ Triannon::Engine.routes.draw do
|
|
7
7
|
constraints: lambda { |request|
|
8
8
|
id = request.env["action_dispatch.request.path_parameters"][:id]
|
9
9
|
id !~ /^iiif$/ && id !~ /^oa$/ && id !~ /^search$/
|
10
|
-
|
10
|
+
} do
|
11
11
|
collection do
|
12
12
|
get 'search', to: 'search#find'
|
13
13
|
end
|
@@ -26,6 +26,6 @@ Triannon::Engine.routes.draw do
|
|
26
26
|
jsonld_context = request.env["action_dispatch.request.path_parameters"][:jsonld_context]
|
27
27
|
id = request.env["action_dispatch.request.path_parameters"][:id]
|
28
28
|
(jsonld_context =~ /^iiif$/ || jsonld_context =~ /^oa$/ ) && id !~ /^new$/
|
29
|
-
|
29
|
+
}
|
30
30
|
|
31
31
|
end
|
data/config/triannon.yml
CHANGED
@@ -1,15 +1,38 @@
|
|
1
1
|
development:
|
2
|
-
|
3
|
-
|
2
|
+
ldp:
|
3
|
+
url: http://your.ldp_store_url.here
|
4
|
+
# uber_container: LDP BasicContainer that will have anno containers as members
|
5
|
+
uber_container: anno
|
6
|
+
# anno_containers: LDP BasicContainers that will have individual annotations as members
|
7
|
+
# the container names here will also map to paths in the triannon url, e.g.
|
8
|
+
# "foo" here will mean you add a foo anno by POST to http://your.triannon-server.com/annotations/foo
|
9
|
+
# and you get the foo anno by GET to http://your.triannon-server.com/annotations/foo/(anno_uuid)
|
10
|
+
anno_containers:
|
11
|
+
- foo
|
12
|
+
- blah
|
13
|
+
solr_url: http://your.triannon_solr_url.here
|
14
|
+
# triannon_base_url: the prefix for the urls for your annos
|
4
15
|
triannon_base_url: http://your.triannon-server.com/annotations/
|
5
16
|
max_solr_retries: 5
|
6
17
|
base_sleep_seconds: 1
|
7
18
|
max_sleep_seconds: 5
|
19
|
+
|
8
20
|
test: &test
|
9
|
-
|
10
|
-
|
21
|
+
ldp:
|
22
|
+
url: http://your.ldp_store_url.here
|
23
|
+
uber_container: anno
|
24
|
+
anno_containers:
|
25
|
+
- foo
|
26
|
+
- blah
|
27
|
+
solr_url: http://your.triannon_solr_url.here
|
11
28
|
triannon_base_url: http://your.triannon-server.com/annotations/
|
29
|
+
|
12
30
|
production:
|
13
|
-
|
14
|
-
|
31
|
+
ldp:
|
32
|
+
url: http://your.ldp_store_url.here
|
33
|
+
uber_container: anno
|
34
|
+
anno_containers:
|
35
|
+
- foo
|
36
|
+
- blah
|
37
|
+
solr_url: http://your.triannon_solr_url.here
|
15
38
|
triannon_base_url: http://your.triannon-server.com/annotations/
|
@@ -11,18 +11,38 @@ module Triannon
|
|
11
11
|
def create_triannon_yml_file
|
12
12
|
default_yml =<<-YML
|
13
13
|
development:
|
14
|
-
|
14
|
+
ldp:
|
15
|
+
url: http://localhost:8983/fedora/rest
|
16
|
+
# uber_container: LDP BasicContainer that will have anno containers as members
|
17
|
+
uber_container: anno
|
18
|
+
# anno_containers: LDP BasicContainers that will have individual annotations as members
|
19
|
+
# the container names here will also map to paths in the triannon url, e.g.
|
20
|
+
# "foo" here will mean you add a foo anno by POST to http://your.triannon-server.com/annotations/foo
|
21
|
+
# and you get the foo anno by GET to http://your.triannon-server.com/annotations/foo/(anno_uuid)
|
22
|
+
anno_containers:
|
23
|
+
- foo
|
24
|
+
- blah
|
15
25
|
solr_url: http://localhost:8983/solr/triannon
|
16
26
|
triannon_base_url: http://your.triannon-server.com/annotations/
|
17
27
|
max_solr_retries: 5
|
18
28
|
base_sleep_seconds: 1
|
19
29
|
max_sleep_seconds: 5
|
20
30
|
test: &test
|
21
|
-
|
31
|
+
ldp:
|
32
|
+
url: http://localhost:8983/fedora/rest
|
33
|
+
uber_container: anno
|
34
|
+
anno_containers:
|
35
|
+
- foo
|
36
|
+
- blah
|
22
37
|
solr_url: http://localhost:8983/solr/triannon
|
23
38
|
triannon_base_url: http://your.triannon-server.com/annotations/
|
24
39
|
production:
|
25
|
-
|
40
|
+
ldp:
|
41
|
+
url:
|
42
|
+
uber_container: anno
|
43
|
+
anno_containers:
|
44
|
+
- foo
|
45
|
+
- blah
|
26
46
|
solr_url:
|
27
47
|
triannon_base_url:
|
28
48
|
YML
|
data/lib/rdf/triannon_vocab.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'rdf'
|
2
2
|
module RDF
|
3
|
-
# contains RDF predefined terms and properties for Triannon
|
3
|
+
# contains RDF predefined terms and properties for Triannon
|
4
4
|
class Triannon < RDF::StrictVocabulary("http://triannon.stanford.edu/ns/")
|
5
5
|
|
6
6
|
# Property definitions
|
@@ -11,4 +11,4 @@ module RDF
|
|
11
11
|
range: "xsd:anyURI".freeze, # rdf:URI? rdfs:Resource?
|
12
12
|
type: "rdf:Property".freeze
|
13
13
|
end
|
14
|
-
end
|
14
|
+
end
|
@@ -1,11 +1,25 @@
|
|
1
|
-
require_relative '../../app/services/triannon/
|
1
|
+
require_relative '../../app/services/triannon/ldp_writer'
|
2
2
|
|
3
3
|
namespace :triannon do
|
4
|
-
desc "
|
5
|
-
task :
|
6
|
-
|
4
|
+
desc "set up jetty for triannon"
|
5
|
+
task :jetty_setup => [:solr_jetty_setup, :disable_fedora_auth_in_jetty]
|
6
|
+
|
7
|
+
desc "set up triannon Solr in jetty"
|
8
|
+
task :solr_jetty_setup do
|
9
|
+
`cp -r config/solr/triannon-core jetty/solr`
|
10
|
+
`cp config/solr/solr.xml jetty/solr`
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "disable fedora basic authorization in jetty"
|
14
|
+
task :disable_fedora_auth_in_jetty do
|
15
|
+
`cp config/jetty/etc/* jetty/etc`
|
16
|
+
end
|
17
|
+
|
18
|
+
desc 'Create the uber root annotation container'
|
19
|
+
task :create_uber_root_container do
|
20
|
+
unless File.exist? Triannon.triannon_file
|
7
21
|
puts "Triannon config file missing: #{Triannon.triannon_file}"
|
8
22
|
end
|
9
|
-
Triannon::
|
23
|
+
Triannon::LdpWriter.create_basic_container(nil, Triannon.config[:ldp]['uber_container'])
|
10
24
|
end
|
11
25
|
end
|
data/lib/triannon.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'linkeddata'
|
2
|
-
require '
|
2
|
+
require 'oa/graph'
|
3
3
|
require 'rdf/iiif'
|
4
|
-
require 'rdf/ldp'
|
5
|
-
require 'rdf/fcrepo4'
|
6
4
|
require 'rdf/triannon_vocab'
|
7
5
|
require 'bootstrap-sass'
|
8
6
|
require 'faraday' # for writing to LDP store
|
@@ -10,23 +8,22 @@ require 'rsolr'
|
|
10
8
|
require 'retries' # for writing to Solr
|
11
9
|
|
12
10
|
module Triannon
|
13
|
-
require
|
14
|
-
require
|
15
|
-
require
|
16
|
-
require
|
17
|
-
require "triannon/jsonld_context"
|
11
|
+
require 'triannon/engine'
|
12
|
+
require 'triannon/error'
|
13
|
+
require 'triannon/iiif_anno_list'
|
14
|
+
require 'triannon/oa_graph_helper.rb'
|
18
15
|
|
19
16
|
class << self
|
20
17
|
attr_accessor :config
|
21
18
|
end
|
22
19
|
|
23
20
|
def self.triannon_file
|
24
|
-
"#{::Rails.root
|
21
|
+
"#{::Rails.root}/config/triannon.yml"
|
25
22
|
end
|
26
23
|
|
27
24
|
def self.config
|
28
25
|
@triannon_config ||= begin
|
29
|
-
|
26
|
+
fail "The #{::Rails.env} environment settings were not found in the triannon.yml config" unless config_yml[::Rails.env]
|
30
27
|
config_yml[::Rails.env].symbolize_keys
|
31
28
|
end
|
32
29
|
end
|
@@ -36,23 +33,19 @@ module Triannon
|
|
36
33
|
require 'yaml'
|
37
34
|
|
38
35
|
return @triannon_yml if @triannon_yml
|
39
|
-
unless File.
|
40
|
-
raise "You are missing the triannon configuration file: #{triannon_file}."
|
41
|
-
end
|
36
|
+
fail "You are missing the triannon configuration file: #{triannon_file}." unless File.exist?(triannon_file)
|
42
37
|
|
43
38
|
begin
|
44
|
-
@triannon_yml = YAML
|
45
|
-
rescue
|
46
|
-
raise
|
39
|
+
@triannon_yml = YAML.load_file(triannon_file)
|
40
|
+
rescue
|
41
|
+
raise 'triannon.yml was found, but could not be parsed.'
|
47
42
|
end
|
48
43
|
|
49
44
|
if @triannon_yml.nil? || !@triannon_yml.is_a?(Hash)
|
50
|
-
|
45
|
+
fail 'triannon.yml was found, but was blank or malformed.'
|
51
46
|
end
|
52
47
|
|
53
|
-
|
48
|
+
@triannon_yml
|
54
49
|
end
|
55
50
|
|
56
|
-
|
57
|
-
|
58
51
|
end
|
@@ -27,14 +27,14 @@ module Triannon
|
|
27
27
|
|
28
28
|
# Class Methods ----------------------------------------------------------------
|
29
29
|
|
30
|
-
# take an Array of annos as
|
30
|
+
# take an Array of annos as OA::Graph objects and return a Hash representation
|
31
31
|
# of IIIF Annotation List
|
32
|
-
# @param [Array<
|
32
|
+
# @param [Array<OA::Graph>] tgraph_array annotations as OA::Graph objects
|
33
33
|
# @return [Hash] IIIF Annotation List as a Hash, containing the annotations in the array
|
34
34
|
def self.anno_list(tgraph_array)
|
35
35
|
if tgraph_array
|
36
36
|
result = {
|
37
|
-
"@context" =>
|
37
|
+
"@context" => OA::Graph::IIIF_CONTEXT_URL,
|
38
38
|
"@type" => "sc:AnnotationList",
|
39
39
|
"within" => {"@type" => "sc:Layer", "total" => tgraph_array.size },
|
40
40
|
"resources" => tgraph_array.map { |g|
|
@@ -56,4 +56,4 @@ module Triannon
|
|
56
56
|
end
|
57
57
|
|
58
58
|
end
|
59
|
-
end
|
59
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'oa/graph'
|
2
|
+
|
3
|
+
# mixin methods
|
4
|
+
module OA
|
5
|
+
class Graph
|
6
|
+
|
7
|
+
# returns graph without any LDP-specific triples
|
8
|
+
def self.remove_ldp_triples graph
|
9
|
+
if graph && graph.is_a?(RDF::Graph) && graph.count > 0
|
10
|
+
no_ldp_graph = RDF::Graph.new
|
11
|
+
ldp_props = RDF::Vocab::LDP.properties.map {|p| p.to_s}
|
12
|
+
graph.each { |stmt|
|
13
|
+
no_ldp_graph << stmt unless ldp_props.include?(stmt.predicate.to_s) ||
|
14
|
+
ldp_props.include?(stmt.object.to_s) ||
|
15
|
+
ldp_props.include?(stmt.subject.to_s)
|
16
|
+
}
|
17
|
+
no_ldp_graph
|
18
|
+
else
|
19
|
+
graph
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# returns graph without any fedora-specific triples
|
24
|
+
# note that the Fedora vocab is not complete and also doesn't include modeshape
|
25
|
+
def self.remove_fedora_triples graph
|
26
|
+
if graph && graph.is_a?(RDF::Graph) && graph.count > 0
|
27
|
+
no_fedora_graph = RDF::Graph.new
|
28
|
+
fedora_props = RDF::Vocab::Fcrepo4.properties.map {|p| p.to_s}
|
29
|
+
fedora_ns = "http://fedora.info/definitions"
|
30
|
+
modeshape_ns = "http://www.jcp.org/jcr"
|
31
|
+
# describable predates Fedora 4.1.1, but just in case ...
|
32
|
+
fedora_describable = "http://purl.org/dc/elements/1.1/describable"
|
33
|
+
graph.each { |stmt|
|
34
|
+
no_fedora_graph << stmt unless fedora_props.include?(stmt.predicate.to_s) ||
|
35
|
+
fedora_props.include?(stmt.object.to_s) ||
|
36
|
+
fedora_props.include?(stmt.subject.to_s) ||
|
37
|
+
stmt.predicate.to_s.match(fedora_ns) ||
|
38
|
+
stmt.predicate.to_s.match(modeshape_ns) ||
|
39
|
+
stmt.subject.to_s.match(fedora_ns) ||
|
40
|
+
stmt.object.to_s.match(fedora_ns) ||
|
41
|
+
stmt.object.to_s.match(modeshape_ns) ||
|
42
|
+
stmt.object.to_s == (fedora_describable)
|
43
|
+
}
|
44
|
+
no_fedora_graph
|
45
|
+
else
|
46
|
+
graph
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
data/lib/triannon/version.rb
CHANGED
metadata
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: triannon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Chris Beer
|
8
7
|
- Naomi Dushay
|
9
8
|
- Willy Mene
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2015-
|
12
|
+
date: 2015-05-08 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: rails
|
@@ -41,7 +40,7 @@ dependencies:
|
|
41
40
|
- !ruby/object:Gem::Version
|
42
41
|
version: '0'
|
43
42
|
- !ruby/object:Gem::Dependency
|
44
|
-
name:
|
43
|
+
name: oa-graph
|
45
44
|
requirement: !ruby/object:Gem::Requirement
|
46
45
|
requirements:
|
47
46
|
- - ">="
|
@@ -68,34 +67,6 @@ dependencies:
|
|
68
67
|
- - ">="
|
69
68
|
- !ruby/object:Gem::Version
|
70
69
|
version: '0'
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: rdf-ldp
|
73
|
-
requirement: !ruby/object:Gem::Requirement
|
74
|
-
requirements:
|
75
|
-
- - ">="
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
78
|
-
type: :runtime
|
79
|
-
prerelease: false
|
80
|
-
version_requirements: !ruby/object:Gem::Requirement
|
81
|
-
requirements:
|
82
|
-
- - ">="
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
version: '0'
|
85
|
-
- !ruby/object:Gem::Dependency
|
86
|
-
name: rdf-fcrepo4
|
87
|
-
requirement: !ruby/object:Gem::Requirement
|
88
|
-
requirements:
|
89
|
-
- - ">="
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
version: '0'
|
92
|
-
type: :runtime
|
93
|
-
prerelease: false
|
94
|
-
version_requirements: !ruby/object:Gem::Requirement
|
95
|
-
requirements:
|
96
|
-
- - ">="
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: '0'
|
99
70
|
- !ruby/object:Gem::Dependency
|
100
71
|
name: bootstrap-sass
|
101
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -278,6 +249,34 @@ dependencies:
|
|
278
249
|
- - ">="
|
279
250
|
- !ruby/object:Gem::Version
|
280
251
|
version: '0'
|
252
|
+
- !ruby/object:Gem::Dependency
|
253
|
+
name: rubocop
|
254
|
+
requirement: !ruby/object:Gem::Requirement
|
255
|
+
requirements:
|
256
|
+
- - ">="
|
257
|
+
- !ruby/object:Gem::Version
|
258
|
+
version: '0'
|
259
|
+
type: :development
|
260
|
+
prerelease: false
|
261
|
+
version_requirements: !ruby/object:Gem::Requirement
|
262
|
+
requirements:
|
263
|
+
- - ">="
|
264
|
+
- !ruby/object:Gem::Version
|
265
|
+
version: '0'
|
266
|
+
- !ruby/object:Gem::Dependency
|
267
|
+
name: rubocop-rspec
|
268
|
+
requirement: !ruby/object:Gem::Requirement
|
269
|
+
requirements:
|
270
|
+
- - ">="
|
271
|
+
- !ruby/object:Gem::Version
|
272
|
+
version: '0'
|
273
|
+
type: :development
|
274
|
+
prerelease: false
|
275
|
+
version_requirements: !ruby/object:Gem::Requirement
|
276
|
+
requirements:
|
277
|
+
- - ">="
|
278
|
+
- !ruby/object:Gem::Version
|
279
|
+
version: '0'
|
281
280
|
- !ruby/object:Gem::Dependency
|
282
281
|
name: rest-client
|
283
282
|
requirement: !ruby/object:Gem::Requirement
|
@@ -322,9 +321,7 @@ dependencies:
|
|
322
321
|
version: '0'
|
323
322
|
description:
|
324
323
|
email:
|
325
|
-
-
|
326
|
-
- ndushay@stanford.edu
|
327
|
-
- wmene@stanford.edu
|
324
|
+
- triannon-commits@lists.stanford.edu
|
328
325
|
executables: []
|
329
326
|
extensions: []
|
330
327
|
extra_rdoc_files: []
|
@@ -345,7 +342,6 @@ files:
|
|
345
342
|
- app/services/triannon/ldp_loader.rb
|
346
343
|
- app/services/triannon/ldp_to_oa_mapper.rb
|
347
344
|
- app/services/triannon/ldp_writer.rb
|
348
|
-
- app/services/triannon/root_annotation_creator.rb
|
349
345
|
- app/services/triannon/solr_searcher.rb
|
350
346
|
- app/services/triannon/solr_writer.rb
|
351
347
|
- app/views/layouts/triannon/application.html.erb
|
@@ -355,6 +351,7 @@ files:
|
|
355
351
|
- app/views/triannon/annotations/show.html.erb
|
356
352
|
- app/views/triannon/search/find.html.erb
|
357
353
|
- config/initializers/mime_types.rb
|
354
|
+
- config/jetty/etc/fedora-override-web.xml
|
358
355
|
- config/routes.rb
|
359
356
|
- config/solr/solr.xml
|
360
357
|
- config/solr/triannon-core/conf/schema.xml
|
@@ -367,11 +364,10 @@ files:
|
|
367
364
|
- lib/triannon.rb
|
368
365
|
- lib/triannon/engine.rb
|
369
366
|
- lib/triannon/error.rb
|
370
|
-
- lib/triannon/graph.rb
|
371
367
|
- lib/triannon/iiif_anno_list.rb
|
372
|
-
- lib/triannon/
|
368
|
+
- lib/triannon/oa_graph_helper.rb
|
373
369
|
- lib/triannon/version.rb
|
374
|
-
homepage:
|
370
|
+
homepage: https://github.com/sul-dlss/triannon
|
375
371
|
licenses:
|
376
372
|
- Apache-2.0
|
377
373
|
metadata: {}
|