package com.github.anno4j.model;
import com.github.anno4j.model.impl.ResourceObject;
import com.github.anno4j.model.namespaces.Anno4jNS;
import com.github.anno4j.model.namespaces.DC;
import com.github.anno4j.model.namespaces.OADM;
import org.openrdf.annotations.Iri;
import java.util.Set;
/**
* The Body and the Target in the Web Annotation Data Model are defined to be an external web resource. The target
* always has to be, the body can be included in the Annotation.
*
* Web Resources are identified with a IRI and have various properties, often including a format or language for the
* resource's content. This information may be recorded as part of the Annotation, even if the representation of the
* resource must be retrieved from the Web.
*/
@Iri(Anno4jNS.EXTERNAL_WEB_RESOURCE)
public interface ExternalWebResource extends CreationProvenance {
/**
* Sets the value for the http://www.w3.org/ns/oa#processingLanguage property.
*
* The object of the property is the language that should be used for textual processing algorithms when dealing
* with the content of the resource, including hyphenation, line breaking, which font to use for rendering and so
* forth. The value must follow the recommendations of [BCP47].
*
* @param processingLanguage The value to set for the http://www.w3.org/ns/oa#processingLanguage property.
*/
@Iri(OADM.PROCESSING_LANGUAGE)
void setProcessingLanguage(String processingLanguage);
/**
* Gets the value of the http://www.w3.org/ns/oa#processingLanguage property.
*
* The object of the property is the language that should be used for textual processing algorithms when dealing
* with the content of the resource, including hyphenation, line breaking, which font to use for rendering and so
* forth. The value must follow the recommendations of [BCP47].
*
* @return The value currently set for the http://www.w3.org/ns/oa#processingLanguage property.
*/
@Iri(OADM.PROCESSING_LANGUAGE)
String getProcessingLanguage();
/**
* Sets the values for the http://purl.org/dc/elements/1.1/language property.
*
* The dc:language predicate recommends the use of a controlled vocabulary. The use of dc:language in the
* Annotation model further specifies that the vocabulary to use is [BCP47].
*
* @param language The values to set for the http://purl.org/dc/elements/1.1/language property.
*/
@Iri(DC.LANGUAGE)
void setLanguages(Set<String> language);
/**
* Gets the values currently set for the http://purl.org/dc/elements/1.1/language property.
*
* The dc:language predicate recommends the use of a controlled vocabulary. The use of dc:language in the
* Annotation model further specifies that the vocabulary to use is [BCP47].
*
* @return The set of values currently set for the http://purl.org/dc/elements/1.1/language property.
*/
@Iri(DC.LANGUAGE)
Set<String> getLanguages();
/**
* Adds a single value to the set of currently set values for the http://purl.org/dc/elements/1.1/language property.
*
* @param language The language value to add to the currently set of values for the
* http://purl.org/dc/elements/1.1/language property.
*/
void addLanguage(String language);
/**
* Sets the value for the http://www.w3.org/ns/oa#textDirection relationship.
*
* The direction of the text of the subject resource. There must only be one text direction associated with any
* given resource.
*
* @param direction The value to set for the http://www.w3.org/ns/oa#textDirection relationship.
*/
@Iri(OADM.TEXT_DIRECTION)
void setTextDirection(ResourceObject direction);
/**
* Gets the value currently set for the http://www.w3.org/ns/oa#textDirection relationship.
*
* The direction of the text of the subject resource. There must only be one text direction associated with any
* given resource.
*
* @return The value currently set for the http://www.w3.org/ns/oa#textDirection relationship.
*/
@Iri(OADM.TEXT_DIRECTION)
ResourceObject getTextDirection();
}