triannon 1.0.1 → 1.1.0

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.
@@ -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 Triannon::Graph object into a Hash suitable for writing to Solr.
7
+ # Convert a OA::Graph object into a Hash suitable for writing to Solr.
8
8
  #
9
- # @param [Triannon::Graph] triannon_graph a populated Triannon::Graph object for a *stored* anno
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::OpenAnnotation.to_s, "") }
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::OpenAnnotation.hasTarget
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::OpenAnnotation.hasBody
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 Triannon::Graph to a Solr document hash, then call RSolr.add
60
+ # Convert the OA::Graph to a Solr document hash, then call RSolr.add
61
61
  # with the doc hash
62
- # @param [Triannon::Graph] tgraph anno represented as a Triannon::Graph
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
- raise Triannon::SearchError.new("error adding doc #{id} to Solr #{doc.inspect}; #{exception.message}", exception.response[:status], exception.response[:body])
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
- raise Triannon::SearchError.new("error adding doc #{id} to Solr #{doc.inspect}; #{exception.message}")
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
- raise Triannon::SearchError.new("error deleting doc #{id} from Solr: #{exception.message}", exception.response[:status], exception.response[:body])
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
- raise Triannon::SearchError.new("error deleting doc #{id} from Solr: #{exception.message}")
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>
@@ -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
- } do
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
@@ -1,15 +1,38 @@
1
1
  development:
2
- ldp_url: yer_ldp_store_url_here
3
- solr_url: yer_triannon_solr_url_here
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
- ldp_url: yer_ldp_url_here
10
- solr_url: yer_triannon_solr_url_here
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
- ldp_url: yer_ldp_url_here
14
- solr_url: yer_triannon_solr_url_here
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
- ldp_url: http://localhost:8983/fedora/rest/anno
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
- ldp_url: http://localhost:8983/fedora/rest/anno
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
- ldp_url:
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
@@ -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/root_annotation_creator'
1
+ require_relative '../../app/services/triannon/ldp_writer'
2
2
 
3
3
  namespace :triannon do
4
- desc "Create the root annotation container"
5
- task :create_root_container do
6
- unless File.exists? Triannon.triannon_file
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::RootAnnotationCreator.create
23
+ Triannon::LdpWriter.create_basic_container(nil, Triannon.config[:ldp]['uber_container'])
10
24
  end
11
25
  end
@@ -1,8 +1,6 @@
1
1
  require 'linkeddata'
2
- require 'rdf/open_annotation'
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 "triannon/engine"
14
- require "triannon/error"
15
- require "triannon/graph"
16
- require "triannon/iiif_anno_list"
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.to_s}/config/triannon.yml"
21
+ "#{::Rails.root}/config/triannon.yml"
25
22
  end
26
23
 
27
24
  def self.config
28
25
  @triannon_config ||= begin
29
- raise "The #{::Rails.env} environment settings were not found in the triannon.yml config" unless config_yml[::Rails.env]
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.exists?(triannon_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::load_file(triannon_file)
45
- rescue => e
46
- raise("triannon.yml was found, but could not be parsed.\n")
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
- raise("triannon.yml was found, but was blank or malformed.\n")
45
+ fail 'triannon.yml was found, but was blank or malformed.'
51
46
  end
52
47
 
53
- return @triannon_yml
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 Triannon::Graph objects and return a Hash representation
30
+ # take an Array of annos as OA::Graph objects and return a Hash representation
31
31
  # of IIIF Annotation List
32
- # @param [Array<Triannon::Graph>] tgraph_array annotations as Triannon::Graph objects
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" => Triannon::JsonldContext::IIIF_CONTEXT_URL,
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
@@ -1,3 +1,3 @@
1
1
  module Triannon
2
- VERSION = "1.0.1"
2
+ VERSION = "1.1.0"
3
3
  end
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.1
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-04-21 00:00:00.000000000 Z
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: rdf-open_annotation
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
- - cabeer@stanford.edu
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/jsonld_context.rb
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: {}