triannon 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: {}