diff --git a/.gitignore b/.gitignore index 8cffa90a5..2a8d1df61 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ package-lock.json .jekyll-cache tmp/ iiifc-theme +Gemfile.lock +vendor diff --git a/Gemfile b/Gemfile index c5f41bd89..5e07b1803 100644 --- a/Gemfile +++ b/Gemfile @@ -12,6 +12,9 @@ gem 'jekyll-seo-tag' # A Fix gem 'webrick', "~> 1.7" +# Note 0.0.3 is broken due to: https://github.com/gemfarmer/jekyll-liquify/issues/8 +gem "jekyll-liquify", "0.0.2" + group :development, :test do gem 'html-proofer', "3.19.0" gem 'rspec' diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index c122d25aa..000000000 --- a/Gemfile.lock +++ /dev/null @@ -1,137 +0,0 @@ -GIT - remote: https://github.com/iiif/iiifc-theme.git - revision: dcdf5cc4c169823256d88a58b4d3ea4f4384c9b8 - branch: main - specs: - iiifc-theme (0.1.0) - html-proofer - jekyll (>= 4.0, < 4.2) - jekyll-data - jekyll-gzip - jekyll-liquify - jekyll-redirect-from - rake - -GEM - remote: https://rubygems.org/ - specs: - addressable (2.8.4) - public_suffix (>= 2.0.2, < 6.0) - colorator (1.1.0) - concurrent-ruby (1.2.2) - diff-lcs (1.5.0) - em-websocket (0.5.3) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0) - ethon (0.16.0) - ffi (>= 1.15.0) - eventmachine (1.2.7) - ffi (1.15.5) - forwardable-extended (2.6.0) - html-proofer (3.19.0) - addressable (~> 2.3) - mercenary (~> 0.3) - nokogumbo (~> 2.0) - parallel (~> 1.3) - rainbow (~> 3.0) - typhoeus (~> 1.3) - yell (~> 2.0) - http_parser.rb (0.8.0) - i18n (1.14.1) - concurrent-ruby (~> 1.0) - jekyll (4.1.1) - addressable (~> 2.4) - colorator (~> 1.0) - em-websocket (~> 0.5) - i18n (~> 1.0) - jekyll-sass-converter (~> 2.0) - jekyll-watch (~> 2.0) - kramdown (~> 2.1) - kramdown-parser-gfm (~> 1.0) - liquid (~> 4.0) - mercenary (~> 0.4.0) - pathutil (~> 0.9) - rouge (~> 3.0) - safe_yaml (~> 1.0) - terminal-table (~> 1.8) - jekyll-data (1.1.1) - jekyll (>= 3.3, < 5.0.0) - jekyll-gzip (2.5.1) - jekyll (>= 3.0, < 5.0) - jekyll-liquify (0.0.2) - liquid (>= 2.5, < 5.0) - redcarpet (~> 3.1) - jekyll-redirect-from (0.16.0) - jekyll (>= 3.3, < 5.0) - jekyll-sass-converter (2.2.0) - sassc (> 2.0.1, < 3.0) - jekyll-seo-tag (2.8.0) - jekyll (>= 3.8, < 5.0) - jekyll-watch (2.2.1) - listen (~> 3.0) - kramdown (2.4.0) - rexml - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - liquid (4.0.4) - listen (3.8.0) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - mercenary (0.4.0) - mini_portile2 (2.8.2) - nokogiri (1.15.2) - mini_portile2 (~> 2.8.2) - racc (~> 1.4) - nokogumbo (2.0.5) - nokogiri (~> 1.8, >= 1.8.4) - parallel (1.23.0) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - public_suffix (5.0.1) - racc (1.7.1) - rainbow (3.1.1) - rake (13.0.6) - rb-fsevent (0.11.2) - rb-inotify (0.10.1) - ffi (~> 1.0) - redcarpet (3.6.0) - rexml (3.2.5) - rouge (3.30.0) - rspec (3.12.0) - rspec-core (~> 3.12.0) - rspec-expectations (~> 3.12.0) - rspec-mocks (~> 3.12.0) - rspec-core (3.12.2) - rspec-support (~> 3.12.0) - rspec-expectations (3.12.3) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-mocks (3.12.5) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-support (3.12.0) - safe_yaml (1.0.5) - sassc (2.4.0) - ffi (~> 1.9) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) - typhoeus (1.4.0) - ethon (>= 0.9.0) - unicode-display_width (1.8.0) - webrick (1.8.1) - yell (2.2.2) - -PLATFORMS - ruby - -DEPENDENCIES - html-proofer (= 3.19.0) - iiifc-theme! - jekyll (~> 4.1.1) - jekyll-redirect-from - jekyll-seo-tag - rspec - webrick (~> 1.7) - -BUNDLED WITH - 2.3.3 diff --git a/source/_data/apis.yml b/source/_data/apis.yml index 471d097d6..b492b819f 100644 --- a/source/_data/apis.yml +++ b/source/_data/apis.yml @@ -55,16 +55,16 @@ discovery: description: Harvest any changes published by organizations that deliver digital objects. image: assets/images/icons/shape@2x.webp alt_text: Change Discovery API icon - draft: - major: 0 - minor: 9 + stable: + major: 1 + minor: 0 patch: 0 content-state: label: Content State API - description: Generate a very specific link to a particular view of an object, like a specific area on a particulat page rotated at a certain angle. + description: Generate a very specific link to a particular view of an object, like a specific area on a particular page rotated at a certain angle. image: assets/images/icons/link-group@2x.webp alt_text: Content State API icon - draft: - major: 0 - minor: 3 + stable: + major: 1 + minor: 0 patch: 0 diff --git a/source/_includes/links.md b/source/_includes/links.md index 163c1b606..10ef9cc05 100644 --- a/source/_includes/links.md +++ b/source/_includes/links.md @@ -178,7 +178,7 @@ [org-ecma-encodeuricomponent]: https://tc39.es/ecma262/#sec-encodeuricomponent-uricomponent "encodeURIComponent" [org-ecma-decodeuricomponent]: https://tc39.es/ecma262/#sec-decodeuricomponent-encodeduricomponent "decodeURIComponent" [org-iana-uri-schemes]: http://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml "IANA URI Schemes" -[org-json-ld]: http://www.json-ld.org/ "JSON for Linking Data" +[org-json-ld]: https://json-ld.org/ "JSON for Linking Data" [org-linked-data]: http://linkeddata.org/ "Linked Data" [org-mellon]: http://www.mellon.org/ "The Andrew W. Mellon Foundation" [org-mozilla-drag-drop]: https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API "HTML Drag and Drop API" @@ -226,6 +226,7 @@ [org-w3c-webanno]: http://w3.org/TR/annotation-model/ "Web Annotation Model" [org-w3c-webanno-motivation]: https://www.w3.org/TR/annotation-model/#motivation-and-purpose "Web Annotation Model - Motivation" [org-w3c-webanno-TextQuoteSelector]: https://www.w3.org/TR/annotation-model/#text-quote-selector "Web Annotation Model - Text Quote Selector" +[org-w3c-webanno-Selectors]: https://www.w3.org/TR/annotation-model/#selectors "Web Annotation model - Selectors" [org-w3c-webarch]: http://www.w3.org/TR/webarch/ "Architecture of the World Wide Web" [org-w3c-xsd-datetime]: https://www.w3.org/TR/xmlschema11-2/#dateTime "XSD DateTime" [org-whatwg-user-gesture]: https://html.spec.whatwg.org/multipage/interaction.html#user-activation-processing-model "User Gesture" @@ -240,6 +241,7 @@ [prezi21-change-log]: {{ site.api_url | absolute_url }}/presentation/2.1/change-log/ "Presentation API 2.1 Change Log" [prezi211-change-log]: {{ site.api_url | absolute_url }}/presentation/2.1/change-log-211/ "Presentation API 2.1.1 Change Log" [prezi21]: {{ site.api_url | absolute_url }}/presentation/2.1/ "IIIF Presentation API 2.1" +[prezi21-rot]: {{ site.api_url | absolute_url }}/presentation/2.0/#rotation "Rotation in Presentation API" [prezi3-considerations]: {{ site.api_url | absolute_url }}/presentation/3.{{ site.data.apis.presentation.latest.minor }}/#4-json-ld-considerations "Presentation API Section 4" [prezi3-html]: {{ site.api_url | absolute_url }}/presentation/3.{{ site.data.apis.presentation.latest.minor }}/#45-html-markup-in-property-values "Presentation API Section 4.4" [prezi3-languages]: {{ site.api_url | absolute_url }}/presentation/{{site.data.apis.presentation.latest.major}}.{{ site.data.apis.presentation.latest.minor }}/#language-of-property-values "Language of Property Values" @@ -282,6 +284,7 @@ [registry-motivations]: {{ site.api_url | absolute_url }}/registry/motivations/ [registry-behaviors]: {{ site.api_url | absolute_url }}/registry/behaviors/ [registry-process]: {{ site.api_url | absolute_url }}/registry/process/ +[registry-selectors]: {{ site.api_url | absolute_url }}/registry/selectors/ [registry-services]: {{ site.api_url | absolute_url }}/registry/services/ [registry-profiles]: {{ site.api_url | absolute_url }}/registry/profiles/ [registry-timeModes]: {{ site.api_url | absolute_url }}/registry/timeModes/ diff --git a/source/content-state/0.1/index.md b/source/content-state/0.1/index.md index d9b0f68ac..9f347381f 100644 --- a/source/content-state/0.1/index.md +++ b/source/content-state/0.1/index.md @@ -34,7 +34,7 @@ hero: {:.no_toc} __This Version:__ {{ page.major }}.{{ page.minor }}.{{ page.patch }}{% if page.pre != 'final' %}-{{ page.pre }}{% endif %} -__Latest Stable Version:__ [{{ site.data.apis.content-state.latest.major }}.{{ site.data.apis.content-state.latest.minor }}.{{ site.data.apis.content-state.latest.patch }}][contenstate-stable-version] +__Latest Stable Version:__ [{{ site.data.apis.content-state.stable.major }}.{{ site.data.apis.content-state.stable.minor }}.{{ site.data.apis.content-state.stable.patch }}][contenstate-stable-version] __Previous Version:__ None diff --git a/source/content-state/0.2/index.md b/source/content-state/0.2/index.md index 5dea8437d..6cebc1402 100644 --- a/source/content-state/0.2/index.md +++ b/source/content-state/0.2/index.md @@ -34,7 +34,7 @@ hero: {:.no_toc} __This Version:__ {{ page.major }}.{{ page.minor }}.{{ page.patch }}{% if page.pre != 'final' %}-{{ page.pre }}{% endif %} -__Latest Stable Version:__ [{{ site.data.apis.content-state.latest.major }}.{{ site.data.apis.content-state.latest.minor }}.{{ site.data.apis.content-state.latest.patch }}][contenstate-stable-version] +__Latest Stable Version:__ [{{ site.data.apis.content-state.stable.major }}.{{ site.data.apis.content-state.stable.minor }}.{{ site.data.apis.content-state.stable.patch }}][contenstate-stable-version] __Previous Version:__ [0.1][contentstate01] diff --git a/source/content-state/0.3/index.md b/source/content-state/0.3/index.md index 1a79a7b35..90a7b0f2c 100644 --- a/source/content-state/0.3/index.md +++ b/source/content-state/0.3/index.md @@ -34,7 +34,7 @@ hero: {:.no_toc} __This Version:__ {{ page.major }}.{{ page.minor }}.{{ page.patch }}{% if page.pre != 'final' %}-{{ page.pre }}{% endif %} -__Latest Stable Version:__ [{{ site.data.apis.content-state.latest.major }}.{{ site.data.apis.content-state.latest.minor }}.{{ site.data.apis.content-state.latest.patch }}][contenstate-stable-version] +__Latest Stable Version:__ [{{ site.data.apis.content-state.stable.major }}.{{ site.data.apis.content-state.stable.minor }}.{{ site.data.apis.content-state.stable.patch }}][contenstate-stable-version] __Previous Version:__ [0.2][contentstate02] diff --git a/source/content-state/0.9/index.md b/source/content-state/0.9/index.md index 6fc37128e..4a66050d4 100644 --- a/source/content-state/0.9/index.md +++ b/source/content-state/0.9/index.md @@ -44,7 +44,7 @@ hero: {:.no_toc} __This Version:__ {{ page.major }}.{{ page.minor }}.{{ page.patch }}{% if page.pre != 'final' %}-{{ page.pre }}{% endif %} -__Latest Stable Version:__ [{{ site.data.apis.content-state.latest.major }}.{{ site.data.apis.content-state.latest.minor }}.{{ site.data.apis.content-state.latest.patch }}][contenstate-stable-version] +__Latest Stable Version:__ [{{ site.data.apis.content-state.stable.major }}.{{ site.data.apis.content-state.stable.minor }}.{{ site.data.apis.content-state.stable.patch }}][contenstate-stable-version] __Previous Version:__ [0.3][contentstate03] diff --git a/source/content-state/1.0/index.md b/source/content-state/1.0/index.md index 40ccc6845..4bcadd334 100644 --- a/source/content-state/1.0/index.md +++ b/source/content-state/1.0/index.md @@ -45,7 +45,7 @@ hero: {:.no_toc} __This Version:__ {{ page.major }}.{{ page.minor }}.{{ page.patch }}{% if page.pre != 'final' %}-{{ page.pre }}{% endif %} -__Latest Stable Version:__ [{{ site.data.apis.content-state.latest.major }}.{{ site.data.apis.content-state.latest.minor }}.{{ site.data.apis.content-state.latest.patch }}][contenstate-stable-version] +__Latest Stable Version:__ [{{ site.data.apis.content-state.stable.major }}.{{ site.data.apis.content-state.stable.minor }}.{{ site.data.apis.content-state.stable.patch }}][contenstate-stable-version] __Previous Version:__ [0.9][contentstate09] diff --git a/source/discovery/0.1/index.md b/source/discovery/0.1/index.md index 5162f7a85..a6741b85c 100644 --- a/source/discovery/0.1/index.md +++ b/source/discovery/0.1/index.md @@ -32,7 +32,7 @@ editors: {:.no_toc} __This Version:__ {{ page.major }}.{{ page.minor }}.{{ page.patch }}{% if page.pre != 'final' %}-{{ page.pre }}{% endif %} -__Latest Stable Version:__ None +__Latest Stable Version:__ [{{ site.data.apis.discovery.stable.major }}.{{ site.data.apis.discovery.stable.minor }}.{{ site.data.apis.discovery.stable.patch }}][discovery-stable-version] __Previous Version:__ None diff --git a/source/discovery/0.2/index.md b/source/discovery/0.2/index.md index d5402ce8c..6d9517655 100644 --- a/source/discovery/0.2/index.md +++ b/source/discovery/0.2/index.md @@ -32,7 +32,7 @@ editors: {:.no_toc} __This Version:__ {{ page.major }}.{{ page.minor }}.{{ page.patch }}{% if page.pre != 'final' %}-{{ page.pre }}{% endif %} -__Latest Stable Version:__ None +__Latest Stable Version:__ [{{ site.data.apis.discovery.stable.major }}.{{ site.data.apis.discovery.stable.minor }}.{{ site.data.apis.discovery.stable.patch }}][discovery-stable-version] __Previous Version:__ [0.1][discovery01] diff --git a/source/discovery/0.3/index.md b/source/discovery/0.3/index.md index 538f0441a..3d01dcafb 100644 --- a/source/discovery/0.3/index.md +++ b/source/discovery/0.3/index.md @@ -32,7 +32,7 @@ editors: {:.no_toc} __This Version:__ {{ page.major }}.{{ page.minor }}.{{ page.patch }}{% if page.pre != 'final' %}-{{ page.pre }}{% endif %} -__Latest Stable Version:__ None +__Latest Stable Version:__ [{{ site.data.apis.discovery.stable.major }}.{{ site.data.apis.discovery.stable.minor }}.{{ site.data.apis.discovery.stable.patch }}][discovery-stable-version] __Previous Version:__ [0.2][discovery02] diff --git a/source/discovery/0.4/index.md b/source/discovery/0.4/index.md index d53193698..ca761d1ef 100644 --- a/source/discovery/0.4/index.md +++ b/source/discovery/0.4/index.md @@ -32,7 +32,7 @@ editors: {:.no_toc} __This Version:__ {{ page.major }}.{{ page.minor }}.{{ page.patch }}{% if page.pre != 'final' %}-{{ page.pre }}{% endif %} -__Latest Stable Version:__ None +__Latest Stable Version:__ [{{ site.data.apis.discovery.stable.major }}.{{ site.data.apis.discovery.stable.minor }}.{{ site.data.apis.discovery.stable.patch }}][discovery-stable-version] __Previous Version:__ [0.3][discovery03] diff --git a/source/discovery/0.9/index.md b/source/discovery/0.9/index.md index 34b772445..6c93da7f4 100644 --- a/source/discovery/0.9/index.md +++ b/source/discovery/0.9/index.md @@ -35,7 +35,7 @@ hero: {:.no_toc} __This Version:__ {{ page.major }}.{{ page.minor }}.{{ page.patch }}{% if page.pre != 'final' %}-{{ page.pre }}{% endif %} -__Latest Stable Version:__ None +__Latest Stable Version:__ [{{ site.data.apis.discovery.stable.major }}.{{ site.data.apis.discovery.stable.minor }}.{{ site.data.apis.discovery.stable.patch }}][discovery-stable-version] __Previous Version:__ [0.4][discovery04] diff --git a/source/discovery/1.0/index.md b/source/discovery/1.0/index.md index 445faeb1c..72e8e13ee 100644 --- a/source/discovery/1.0/index.md +++ b/source/discovery/1.0/index.md @@ -38,7 +38,7 @@ hero: {:.no_toc} __This Version:__ {{ page.major }}.{{ page.minor }}.{{ page.patch }}{% if page.pre != 'final' %}-{{ page.pre }}{% endif %} -__Latest Stable Version:__ [{{ site.discovery_api.stable.major }}.{{ site.discovery_api.stable.minor }}.{{ site.discovery_api.stable.patch }}][discovery-stable-version] +__Latest Stable Version:__ [{{ site.data.apis.discovery.stable.major }}.{{ site.data.apis.discovery.stable.minor }}.{{ site.data.apis.discovery.stable.patch }}][discovery-stable-version] __Previous Version:__ [0.9.2][discovery09] diff --git a/source/image/1.1/index.html b/source/image/1.1/index.html index ae370fcbd..95de05280 100644 --- a/source/image/1.1/index.html +++ b/source/image/1.1/index.html @@ -740,7 +740,7 @@

"http://library.stanford.edu/iiif/image-api/1.1/context.json" for version 1.1 of the IIIF Image API. This document allows the response to be interpreted as RDF, using the - JSON-LD serialization. + JSON-LD serialization. diff --git a/source/image/2.0/index.md b/source/image/2.0/index.md index ed3e7f7a5..a45e1b1ce 100644 --- a/source/image/2.0/index.md +++ b/source/image/2.0/index.md @@ -782,7 +782,7 @@ Many thanks to Ben Albritton, Matthieu Bonicel, Anatol Broder, Kevin Clarke, To [cors-spec]: http://www.w3.org/TR/cors/ "Cross-Origin Resource Sharing" [iiif-discuss]: mailto:iiif-discuss@googlegroups.com "Email Discussion List" [json-as-json-ld]: http://www.w3.org/TR/json-ld/#interpreting-json-as-json-ld "JSON-LD 1.0: 6.8 Interpreting JSON as JSON-LD" -[json-ld-org]: http://www.json-ld.org/ "JSON for Linking Data" +[json-ld-org]: https://json-ld.org/ "JSON for Linking Data" [json-ld-w3c]: http://www.w3.org/TR/json-ld/ "JSON-LD 1.0" [mellon]: http://www.mellon.org/ "The Andrew W. Mellon Foundation" [rfc-2617]: https://datatracker.ietf.org/doc/html/rfc2617 "HTTP Authentication: Basic and Digest Access Authentication" diff --git a/source/image/2.1/index.md b/source/image/2.1/index.md index 61124bec2..4039bb0a3 100644 --- a/source/image/2.1/index.md +++ b/source/image/2.1/index.md @@ -980,7 +980,7 @@ Many thanks to the members of the [IIIF][iiif-community] for their continuous en [cors-spec]: http://www.w3.org/TR/cors/ "Cross-Origin Resource Sharing" [iiif-discuss]: mailto:iiif-discuss@googlegroups.com "Email Discussion List" [json-as-json-ld]: http://www.w3.org/TR/json-ld/#interpreting-json-as-json-ld "JSON-LD 1.0: 6.8 Interpreting JSON as JSON-LD" -[json-ld-org]: http://www.json-ld.org/ "JSON for Linking Data" +[json-ld-org]: https://json-ld.org/ "JSON for Linking Data" [json-ld-w3c]: http://www.w3.org/TR/json-ld/ "JSON-LD 1.0" [mellon]: http://www.mellon.org/ "The Andrew W. Mellon Foundation" [rfc-2617]: https://datatracker.ietf.org/doc/html/rfc2617 "HTTP Authentication: Basic and Digest Access Authentication" diff --git a/source/presentation/3.0/index.md b/source/presentation/3.0/index.md index 0abc6de70..75a5c2eef 100644 --- a/source/presentation/3.0/index.md +++ b/source/presentation/3.0/index.md @@ -1667,7 +1667,7 @@ Note that the Web Annotation data model defines different patterns for the `valu Additional features of the Web Annotation data model _MAY_ also be used, such as selecting a segment of the Canvas or content resource, or embedding the comment or transcription within the Annotation. The use of these advanced features sometimes results in situations where the `target` is not a content resource, but instead a SpecificResource, a Choice, or other non-content object. Implementations should check the `type` of the resource and not assume that it is always content to be rendered. -The IIIF community has defined [additional Selector classes][annex-oa] for use with SpecificResources, especially for cases when it is not possible to use the official FragmentSelector. See the additional documentation for details. +The IIIF community has defined [additional Selector classes][registry-selectors] for use with SpecificResources, especially for cases when it is not possible to use the official FragmentSelector. See the additional documentation for details. {% include api/code_header.html %} ``` json-doc diff --git a/source/presentation/3/context.json b/source/presentation/3/context.json index e77664acf..99c33226d 100644 --- a/source/presentation/3/context.json +++ b/source/presentation/3/context.json @@ -346,6 +346,16 @@ "@container": "@set" }, + "selector":{ + "@type":"@id", + "@id":"oa:selector", + "@container" : "@set", + "@context":[ + "https://iiif.io/api/registry/selectors/context.json", + "http://www.w3.org/ns/anno.jsonld" + ] + }, + "start": { "@type": "@id", "@id": "iiif_prezi:start" diff --git a/source/registry/index.md b/source/registry/index.md index bc87b6f43..8fa1db135 100644 --- a/source/registry/index.md +++ b/source/registry/index.md @@ -17,6 +17,7 @@ The process for having an entry included in one of the IIIF extension registries * [Presentation API Extensions][extensions] * [Motivations][registry-motivations] * [Profiles][registry-profiles] +* [Selectors][registry-selectors] * [Rights Statements and Licenses][registry-rights] * [Services][registry-services] * [TimeModes][registry-timeModes] diff --git a/source/registry/motivations/index.md b/source/registry/motivations/index.md index ce79865e9..6e0d46ea3 100644 --- a/source/registry/motivations/index.md +++ b/source/registry/motivations/index.md @@ -1,7 +1,7 @@ --- title: Registry of Motivations layout: spec -tags: [annex, service, services, specifications] +tags: [registry, motivations, specifications] cssversion: 2 editors: - name: Michael Appleby diff --git a/source/registry/profiles/index.md b/source/registry/profiles/index.md index e14befb54..8c38c1130 100644 --- a/source/registry/profiles/index.md +++ b/source/registry/profiles/index.md @@ -59,7 +59,7 @@ The process for having a new entry added to this registry is [described here][re This table summarizes the known profiles available, for use with the [Presentation API][prezi-api]. | Profile | Description | -| ------------------------------ | +| ------------------------------ | ------------------------------ | | http://www.loc.gov/mods/v3 | The URI for identifying [MODS (Metadata Object Description Schema)](https://www.loc.gov/standards/mods/) version 3 metadata records. | | https://linked.art/ns/terms | The URI for identifying records that follow the [Linked Art model](https://linked.art/) and [API version 1](https://linked.art/api/1.0/). | | http://www.lido-schema.org/ | The URI for identifying records that follow the [LIDO XML schema](https://cidoc.mini.icom.museum/working-groups/lido/lido-overview/). | @@ -68,6 +68,7 @@ This table summarizes the known profiles available, for use with the [Presentati | http://www.loc.gov/standards/alto | The URI for identifying [ALTO](https://www.loc.gov/standards/alto/) which is used for encoding OCR text. | | http://www.loc.gov/standards/marcxml | The URI for identifying [MarcXML](https://www.loc.gov/standards/marcxml/) metadata records. | | http://purl.org/dc/terms/ | The URI for identifying records that follow the [Dublin Core Metadata Initiative Metadata Terms](https://www.dublincore.org/specifications/dublin-core/dcmi-terms/) (NB: these are different from the legacy Dublin Core Metadata Element Set, Version 1.1, refered to as http://purl.org/dc/elements/1.1/). | +| http://www.europeana.eu/schemas/edm/ | The URI for identifying [EDM (Europeana Data Model)](https://pro.europeana.eu/page/edm-documentation) metadata records. | {: .api-table} @@ -83,6 +84,7 @@ Thanks to the members of the [IIIF][iiif-community] for their continuous engagem | ---------- | -------------------------------------------------- | | 2018-XX-YY | New Version 3 Registries | | 2023-XX-YY | Added MarcXML as a profile | +| 2022-11-15 | Addition of EDM (Europeana Data Model) | {% include acronyms.md %} {% include links.md %} diff --git a/source/registry/selectors/context.json b/source/registry/selectors/context.json new file mode 100644 index 000000000..ead963f15 --- /dev/null +++ b/source/registry/selectors/context.json @@ -0,0 +1,60 @@ +{ + "@context": { + "@version":1.1, + "iiif_selectors": "http://iiif.io/api/registry/selectors#", + "xsd": "http://www.w3.org/2001/XMLSchema#", + + + "ImageApiSelector": { + "@id": "iiif_selectors:ImageApiSelector", + "@context": [ + { + "iiif_image": "http://iiif.io/api/image/#", + "region": { + "@id": "iiif_image:regionValue", + "@type": "xsd:string" + }, + "size": { + "@id": "iiif_image:sizeValue", + "@type": "xsd:string" + }, + "rotation": { + "@id": "iiif_image:rotationValue", + "@type": "xsd:string" + }, + "format": { + "@id": "iiif_image:formatValue", + "@type": "xsd:string" + }, + "quality": { + "@id": "iiif_image:qualityValue", + "@type": "xsd:string" + } + } + ] + }, + + "PointSelector": { + "@id": "iiif_selectors:PointSelector", + "@context": + { + "x": { + "@id": "iiif_selectors:xValue", + "@type": "xsd:integer" + }, + "y": { + "@id": "iiif_selectors:yValue", + "@type": "xsd:integer" + }, + "t": { + "@id": "iiif_selectors:tValue", + "@type": "xsd:float" + } + } + }, + + + "AudioContentSelector": "iiif_selectors:AudioContentSelector", + "VisualContentSelector": "iiif_selectors:VisualContentSelector" + } +} diff --git a/source/registry/selectors/index.md b/source/registry/selectors/index.md new file mode 100644 index 000000000..ee97ef2ad --- /dev/null +++ b/source/registry/selectors/index.md @@ -0,0 +1,163 @@ +--- +title: "Registry of Selectors" +tags: [registry, selectors, specifications] +layout: spec +cssversion: 2 +editors: +- name: Michael Appleby + ORCID: https://orcid.org/0000-0002-1266-298X + institution: Yale University +- name: Tom Crane + ORCID: https://orcid.org/0000-0003-1881-243X + institution: Digirati +- name: Robert Sanderson + ORCID: https://orcid.org/0000-0003-4441-6852 + institution: J. Paul Getty Trust +- name: Simeon Warner + ORCID: https://orcid.org/0000-0002-7970-7855 + institution: Cornell University +- name: Dawn Childress + ORCID: https://orcid.org/0000-0003-2602-2788 + institution: UCLA +- name: Jeff Mixter + ORCID: https://orcid.org/0000-0002-8411-2952 + institution: OCLC Research +--- + +## Status of this Document +{:.no_toc} + +This document is not subject to [semantic versioning][notes-versioning]. +Changes will be tracked within the document. + +**Editors:** + +{% include api/editors.md editors=page.editors %} + +{% include copyright.md %} + + +## 1. Introduction +{: #introduction} + +Selectors in Annotations are used to describe how to retrieve a given part of a resource. They are then associated with an instance of `SpecificResource` that also references the resource of which the Specific Resource is part. + +The Selectors described here extend the use of the [Web Annotation][org-w3c-webanno] model within the IIIF APIs, and were previously applied to the predecessor of the Web Annotation model, Open Annotation. These Selectors can be used with either annotation model. + +IIIF also supports the use of Web Annotation model Selectors, such as `FragmentSelector`. For more information on these Selectors, see the [IIIF Presentation API][prezi-api] and the [Web Annotation Selectors documentation][org-w3c-webanno-Selectors]. + +## 2. Selector Classes + +### 2.1 IIIF Image API Selector +{: #iiif-image-api-selector} + +The [Image API Selector][registry-selectors] is used to describe the operations available via the Image API in order to retrieve a particular image representation. In this case the resource is the abstract image as identified by the [IIIF Image API][image-api] base URI plus identifier, and the retrieval process involves adding the correct parameters after that base URI. For example, the top left hand quadrant of an image has the region parameter of `pct:0,0,50,50` which must be put into the requested URI to obtain the appropriate representation. + +In order to make this as easy as possible for the situations when a IIIF Image API endpoint exists, we introduce a new Selector class called `ImageApiSelector`. It has properties that give the parameter values needed to fill out the URL structure in the request. If the property is not given, then a default should be used. + +One use of this is within the [IIIF Presentation API][prezi-api], when a Canvas is being painted by part of an image, or an image that requires rotation before display. + +| Property | Default | Description | +| -------- | -------- |----------------------------------------------- | +| type | | Required. Must be the value `ImageApiSelector`. | +| region | `full` | The string to put in the region parameter of the URI. | +| size | `max` | The string to put in the size parameter of the URI. | +| rotation | `0` | The string to put in the rotation parameter of the URI. Note that this must be a string in order to allow mirroring, for example "!90". | +| quality | `default` | The string to put in the quality parameter of the URI. | +| format | `jpg` | The string to put in the format parameter of the URI. Note that the '.' character is not part of the format, just the URI syntax. | +{: .api-table} + +For example, to rotate the top left hand 10% of the image clockwise by 90 degrees would use this configuration of the Selector: + +{% include api/code_header.html %} +``` json-doc +{ + "type" : "ImageApiSelector", + "region" : "pct:0,0,10,10", + "rotation" : "90" +} +``` + +And would result in this SpecificResource, when applied to an image service at `https://example.org/iiif/image1`: + +{% include api/code_header.html %} +``` json-doc +{ + "type": "SpecificResource", + "source": "https://example.org/iiif/image1", + "selector": { + "type": "ImageApiSelector", + "region": "pct:0,0,10,10", + "rotation": "90" + } +} +``` + +It can be used in the Presentation API as demonstrated in the section on [Rotation (Presentation 2.1)][prezi21-rot]. For more information on using Selectors in IIIF, see the current [Presentation API 3 specification][prezi-api]. + +*Note: The default values in the table above follow the IIIF Image API 3. For default values in previous Image API versions, you will need to consult the corresponding documentation.* + +### 2.2 Point Selectors +{: #point-selector} + +There are common use cases in which a point, rather than a range or area, is the target of the Annotation. For example, putting a pin in a map should result in an exact point, not a very small rectangle. Points in time are not very short durations, and user interfaces should also treat these differently. This is particularly important when zooming in (either spatially or temporally) beyond the scale of the frame of reference. Even if the point takes up a 10 by 10 pixel square at the user's current resolution, it is not a rectangle bounding an area. + +It is not possible to select a point using URI Fragments with the Media Fragment specification, as zero-sized fragments are not allowed. In order to fulfill the use cases, this specification defines a new Selector class called `PointSelector`. + +| Property | Description | +| -------- | ----------------------------------------------------- | +| type | Required. Must be the value `PointSelector`. | +| x | Optional. An integer giving the x coordinate of the point, relative to the dimensions of the target resource. | +| y | Optional. An integer giving the y coordinate of the point, relative to the dimensions of the target resource. | +| t | Optional. A floating point number giving the time of the point in seconds, relative to the duration of the target resource. | +{: .api-table} + +For example, to select a point in a video that is 10 pixels in from the top left hand corner of the visual content, and 14.5 seconds into the duration: + +{% include api/code_header.html %} +``` json-doc +{ + "type": "PointSelector", + "x": 10, + "y": 10, + "t": 14.5 +} +``` + +### 2.3 Content Selectors +{: #content-selectors} + +Video content resources consist of both visual and audio content within the same bit-level representation. There are situations when it is useful to refer to only one aspect of the content -- either the visual or the audio, but not both. For example, an Annotation might associate only the visual content of a video that has spoken English in the audio, and an audio file that has the translation of that content in Spanish. + +This specification defines two Selectors, `AudioContentSelector` that selects the audio content and a second `VisualContentSelector` for the visual content. Neither selector has any additional properties. + +{% include api/code_header.html %} +``` json-doc +{ "type": "AudioContentSelector" } +``` + +{% include api/code_header.html %} +``` json-doc +{ "type": "VisualContentSelector" } +``` + +## Appendices + +### A. Acknowledgements + +The production of this document was generously supported by a grant from the [Andrew W. Mellon Foundation][org-mellon]. + +Thanks to the members of the [IIIF][iiif-community] for their continuous engagement, innovative ideas and feedback. + +### B. Change Log + +| Date | Description | +| ---------- | -------------------------------------------------- | +| 2023-09-26 | Version 1.2 (Change document to Registry of Selectors from Open/Web Annotation Extensions) +| 2018-03-14 | Version 1.1 (Update ImageApi, add Point Selectors) | +| 2014-07-01 | Version 1.0 (RFC) | +{:.api-table} + +{% include acronyms.md %} +{% include links.md %} +