All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.digitalcollections.iiif.presentation.model.api.v2.IiifResource Maven / Gradle / Ivy

There is a newer version: 3.2.6
Show newest version
package de.digitalcollections.iiif.presentation.model.api.v2;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;

public interface IiifResource {
  PropertyValue getAttribution();

  /**
   * @param attribution A human readable label that must be displayed when the resource it is associated with is
   * displayed or used. For example, this could be used to present copyright or ownership statements, or simply an
   * acknowledgment of owning and/or publishing institutions. Any resource may have an attribution label.
   */
  void setAttribution(PropertyValue attribution);

  URI getId();

  void setId(String id) throws URISyntaxException;

  void setId(URI id);

  String getLicense();

  /**
   * @param license A link to an external resource that describes the license or rights statement under which the
   * resource is being used. The rationale for this being a URI and not a human readable label is that typically there
   * is one license for many resources, and the text is too long to be displayed to the user along with the object. If
   * displaying the text is a requirement, then it is recommended to include the information using the attribution
   * property instead. Any resource type may have one or more licenses associated with it.
   */
  void setLicense(String license);

  String getLogo();

  /**
   * @param logo A small image that represents an individual or organization associated with the resource it is attached
   * to. This could be the logo of the owning or hosting institution. The logo must be clearly rendered when the
   * resource is displayed or used, without cropping, rotating or otherwise distorting the image. It is recommended that
   * a IIIF Image API service be available for this image for manipulations such as resizing. Any resource type may have
   * one or more logos associated with it.
   */
  void setLogo(String logo);

  String getRelated();

  /**
   * @param related A link to an external resource intended to be displayed directly to the user, and is related to the
   * resource that has the related property. Examples might include a video or academic paper about the resource, a
   * website, an HTML description, and so forth. A label and the format of the related resource should be given to
   * assist clients in rendering the resource to the user. Any resource type may have one or more external resources
   * related to it.
   */
  void setRelated(String related);

  List getSeeAlso();

  /**
   * @param seeAlso A link to a machine readable document that semantically describes the resource with the seeAlso
   * property, such as an XML or RDF description. This document could be used for search and discovery or inferencing
   * purposes, or just to provide a longer description of the resource. The profile and format properties of the
   * document should be given to help the client to make appropriate use of the document. Any resource type may have one
   * or more external descriptions related to it.
   */
  void setSeeAlso(List seeAlso);

  Service getService();

  /**
   * @param service A link to a service that makes more functionality available for the resource, such as from an image
   * to the base URI of an associated IIIF Image API service. The service resource should have additional information
   * associated with it in order to allow the client to determine how to make appropriate use of it, such as a profile
   * link to a service description. It may also have relevant information copied from the service itself. This
   * duplication is permitted in order to increase the performance of rendering the object without necessitating
   * additional HTTP requests. Please see the Service Profiles document for known services. Any resource type may have
   * one or more links to an external service.
   */
  void setService(Service service);

  /**
   * @return The type of the resource. For the resource types defined by this specification, the value of @type will be
   * described in the sections below. For content resources, the type may be drawn from other vocabularies.
   * Recommendations for basic types such as image, text or audio are also given in the sections below.
   *
   * All resource types must have at least one type specified.
   *
   * This requirement applies only to the types described in Section 2. Services, Thumbnails and other resources will
   * have their own requirements.
   */
  String getType();

  URI getWithin();

  /**
   * @param within A link to a resource that contains the current resource, such as annotation lists within a layer.
   * This also allows linking upwards to collections that allow browsing of the digitized objects available.
   *
   * Collections or annotation lists that serve as pages must be within exactly one paged resource. Other resource
   * types, including collections or annotation lists not serving as pages, may be within one or more containing
   * resources.
   */
  void setWithin(URI within);

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy