PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX hydra: <http://www.w3.org/ns/hydra/core#>
PREFIX linkml: <https://w3id.org/linkml/>
PREFIX cc: <http://creativecommons.org/ns#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX ns: <http://www.w3.org/2003/06/sw-vocab-status/ns#>
PREFIX sh: <http://www.w3.org/ns/shacl#>
PREFIX vann: <http://purl.org/vocab/vann/>

<http://www.w3.org/ns/hydra/core> a owl:Ontology ;
  rdfs:label "The Hydra Core Vocabulary" ;
  rdfs:comment "A lightweight vocabulary for hypermedia-driven Web APIs" ;
  dcterms:license <http://creativecommons.org/licenses/by/4.0/> ;
  cc:attributionName "Hydra W3C Community Group" ;
  cc:attributionURL <http://www.hydra-cg.com/> ;
  dcterms:description "The Hydra Core Vocabulary is a lightweight vocabulary to create hypermedia-driven Web APIs. By specifying a number of concepts commonly used in Web APIs it enables the creation of generic API clients." ;
  dcterms:publisher "Hydra W3C Community Group" ;
  dcterms:rights "Copyright © 2012-2014 the Contributors to the Hydra Core Vocabulary Specification" ;
  vann:preferredNamespacePrefix "hydra" ;
  vann:preferredNamespaceUri "http://www.w3.org/ns/hydra/core#"^^xsd:anyURI ;
  sh:declare [
    sh:prefix "hydra" ;
    sh:namespace "http://www.w3.org/ns/hydra/core#"^^xsd:anyURI
  ] , [
    sh:prefix "linkml" ;
    sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI
  ] , [
    sh:prefix "cc" ;
    sh:namespace "http://creativecommons.org/ns#"^^xsd:anyURI
  ] , [
    sh:prefix "dcterms" ;
    sh:namespace "http://purl.org/dc/terms/"^^xsd:anyURI
  ] , [
    sh:prefix "rdf" ;
    sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI
  ] , [
    sh:prefix "rdfs" ;
    sh:namespace "http://www.w3.org/2000/01/rdf-schema#"^^xsd:anyURI
  ] , [
    sh:prefix "ns" ;
    sh:namespace "http://www.w3.org/2003/06/sw-vocab-status/ns#"^^xsd:anyURI
  ] .

hydra:Class a owl:Class ;
  rdfs:label "Hydra Class" ;
  rdfs:comment "The class of Hydra classes. Hydra classes and their instances are dereferenceable resources." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Resource , rdfs:Class , [
    a owl:Restriction ;
    owl:onProperty hydra:supportedProperty ;
    owl:allValuesFrom hydra:SupportedProperty
  ] .

hydra:DeleteResourceOperation a owl:Class ;
  rdfs:label "DeleteResourceOperation" ;
  rdfs:comment "A DeleteResourceOperation is a HTTP operation that deletes a resource." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Operation .

hydra:Operation a owl:Class ;
  rdfs:label "Operation" ;
  rdfs:comment "An operation." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Resource , [
    a owl:Restriction ;
    owl:onProperty hydra:method ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty hydra:returns ;
    owl:allValuesFrom hydra:Class
  ] , [
    a owl:Restriction ;
    owl:onProperty hydra:expects ;
    owl:allValuesFrom hydra:Class
  ] .

hydra:ApiDocumentation a owl:Class ;
  rdfs:label "ApiDocumentation" ;
  rdfs:comment "The Hydra API documentation class" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Resource , [
    a owl:Restriction ;
    owl:onProperty hydra:entrypoint ;
    owl:allValuesFrom hydra:Resource
  ] , [
    a owl:Restriction ;
    owl:onProperty hydra:supportedClass ;
    owl:allValuesFrom hydra:Class
  ] .

hydra:SupportedProperty a owl:Class ;
  rdfs:label "Supported Property" ;
  rdfs:comment "A property known to be supported by a Hydra class." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Resource , [
    a owl:Restriction ;
    owl:onProperty hydra:writeable ;
    owl:allValuesFrom xsd:boolean
  ] , [
    a owl:Restriction ;
    owl:onProperty hydra:readable ;
    owl:allValuesFrom xsd:boolean
  ] .

hydra:Resource a owl:Class ;
  rdfs:label "Hydra Resource" ;
  rdfs:comment "The class of dereferenceable resources." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty hydra:operation ;
    owl:allValuesFrom hydra:Operation
  ] .

hydra:BasicRepresentation a owl:Class ;
  rdfs:label "basic value representation" ;
  rdfs:comment "A representation that serializes just the lexical form, but omits language and type information." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Resource .

hydra:PagedCollection a owl:Class ;
  rdfs:label "PagedCollection" ;
  rdfs:comment "A PagedCollection is a subclass of Collection with the only difference that its members are sorted and only a subset of all members are returned in a single PagedCollection. To get the other members, the nextPage/previousPage properties have to be used." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Collection , [
    a owl:Restriction ;
    owl:onProperty hydra:itemsPerPage ;
    owl:allValuesFrom xsd:integer
  ] , [
    a owl:Restriction ;
    owl:onProperty hydra:firstPage ;
    owl:allValuesFrom hydra:PagedCollection
  ] , [
    a owl:Restriction ;
    owl:onProperty hydra:previousPage ;
    owl:allValuesFrom hydra:PagedCollection
  ] , [
    a owl:Restriction ;
    owl:onProperty hydra:lastPage ;
    owl:allValuesFrom hydra:PagedCollection
  ] , [
    a owl:Restriction ;
    owl:onProperty hydra:nextPage ;
    owl:allValuesFrom hydra:PagedCollection
  ] .

hydra:Status a owl:Class ;
  rdfs:label "Status code description" ;
  rdfs:comment "Additional information about a status code that might be returned." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Resource , [
    a owl:Restriction ;
    owl:onProperty hydra:statusCode ;
    owl:allValuesFrom xsd:integer
  ] .

hydra:Collection a owl:Class ;
  rdfs:label "Collection" ;
  rdfs:comment "A collection holding references to a number of related resources." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Resource , [
    a owl:Restriction ;
    owl:onProperty hydra:totalItems ;
    owl:allValuesFrom xsd:integer
  ] , [
    a owl:Restriction ;
    owl:onProperty hydra:member ;
    owl:allValuesFrom hydra:Resource
  ] .

hydra:IriTemplate a owl:Class ;
  rdfs:label "IRI Template" ;
  rdfs:comment "The class of IRI templates." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Resource , [
    a owl:Restriction ;
    owl:onProperty hydra:template ;
    owl:allValuesFrom xsd:string
  ] , [
    a owl:Restriction ;
    owl:onProperty hydra:mapping ;
    owl:allValuesFrom hydra:IriTemplateMapping
  ] .

hydra:IriTemplateMapping a owl:Class ;
  rdfs:label "IriTemplateMapping" ;
  rdfs:comment "A mapping from an IRI template variable to a property." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Resource , [
    a owl:Restriction ;
    owl:onProperty hydra:variable ;
    owl:allValuesFrom xsd:string
  ] .

hydra:CreateResourceOperation a owl:Class ;
  rdfs:label "CreateResourceOperation" ;
  rdfs:comment "A CreateResourceOperation is a HTTP operation which expects an input of the type specified by hydra:expects and creates a resource of the type specified by hydra:returns." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Operation .

hydra:Error a owl:Class ;
  rdfs:label "Error" ;
  rdfs:comment "A runtime error, used to report information beyond the returned status code." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Status .

hydra:ExplicitRepresentation a owl:Class ;
  rdfs:label "explicit value representation" ;
  rdfs:comment "A representation that serializes a value including its language and type information and thus differentiating between IRIs and literals." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Resource .

hydra:ReplaceResourceOperation a owl:Class ;
  rdfs:label "ReplaceResourceOperation" ;
  rdfs:comment "A ReplaceResourceOperation is a HTTP operation which overwrites a resource. It expects data of the type specified in hydra:expects and results in a resource of the type specified by hydra:returns." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Operation .

hydra:freetextQuery a owl:DatatypeProperty ;
  rdfs:label "freetext query" ;
  rdfs:comment "A property representing a freetext query." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range xsd:string .

hydra:totalItems a owl:DatatypeProperty ;
  rdfs:label "total items" ;
  rdfs:comment "The total number of items referenced by a collection or a set of interlinked PagedCollections." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range xsd:integer ;
  rdfs:domain hydra:Collection .

hydra:method a owl:DatatypeProperty ;
  rdfs:label "method" ;
  rdfs:comment "The HTTP method." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range xsd:string ;
  rdfs:domain hydra:Operation .

hydra:description a owl:DatatypeProperty ;
  rdfs:label "description" ;
  rdfs:comment "A description." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range xsd:string .

hydra:writeable a owl:DatatypeProperty ;
  rdfs:label "writeable" ;
  rdfs:comment "True if the client can change the property's value, false otherwise." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range xsd:boolean ;
  rdfs:domain hydra:SupportedProperty .

hydra:template a owl:DatatypeProperty ;
  rdfs:label "template" ;
  rdfs:comment "An IRI template as defined by RFC6570." ;
  rdfs:seeAlso <http://tools.ietf.org/html/rfc6570> ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range xsd:string ;
  rdfs:domain hydra:IriTemplate .

hydra:variable a owl:DatatypeProperty ;
  rdfs:label "variable" ;
  rdfs:comment "An IRI template variable" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range xsd:string ;
  rdfs:domain hydra:IriTemplateMapping .

hydra:mapping a owl:ObjectProperty ;
  rdfs:label "mapping" ;
  rdfs:comment "A variable-to-property mapping of the IRI template." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:IriTemplateMapping ;
  rdfs:domain hydra:IriTemplate .

hydra:property a owl:ObjectProperty ;
  rdfs:label "property" ;
  rdfs:comment "A property" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range rdf:Property .

hydra:readable a owl:DatatypeProperty ;
  rdfs:label "readable" ;
  rdfs:comment "True if the client can retrieve the property's value, false otherwise." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range xsd:boolean ;
  rdfs:domain hydra:SupportedProperty .

hydra:statusCode a owl:DatatypeProperty ;
  rdfs:label "status code" ;
  rdfs:comment "The HTTP status code" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range xsd:integer ;
  rdfs:domain hydra:Status .

hydra:title a owl:DatatypeProperty ;
  rdfs:label "title" ;
  rdfs:comment "A title, often used along with a description." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range xsd:string .

hydra:variableRepresentation a owl:ObjectProperty ;
  rdfs:label "variable representation" ;
  rdfs:comment "The representation format to use when expanding the IRI template." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" .

hydra:required a owl:DatatypeProperty ;
  rdfs:label "required" ;
  rdfs:comment "True if the property is required, false otherwise." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range xsd:boolean .

hydra:itemsPerPage a owl:DatatypeProperty ;
  rdfs:label "items per page" ;
  rdfs:comment "The maximum number of items referenced by each single PagedCollection in a set of interlinked PagedCollections." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range xsd:integer ;
  rdfs:domain hydra:PagedCollection .

hydra:entrypoint a owl:ObjectProperty , owl:NamedIndividual ;
  rdfs:label "entrypoint" ;
  rdfs:comment "A link to main entry point of the Web API" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:Resource ;
  rdfs:domain hydra:ApiDocumentation ;
  a hydra:Link .

hydra:firstPage a owl:ObjectProperty , owl:NamedIndividual ;
  rdfs:label "first page" ;
  rdfs:comment "The first page of an interlinked set of PagedCollections" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:PagedCollection ;
  rdfs:domain hydra:PagedCollection ;
  a hydra:Link .

hydra:returns a owl:ObjectProperty , owl:NamedIndividual ;
  rdfs:label "returns" ;
  rdfs:comment "The information returned by the Web API on success" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:Class ;
  rdfs:domain hydra:Operation ;
  a hydra:Link .

hydra:member a owl:ObjectProperty , owl:NamedIndividual ;
  rdfs:label "member" ;
  rdfs:comment "A member of the collection" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:Resource ;
  rdfs:domain hydra:Collection ;
  a hydra:Link .

hydra:previousPage a owl:ObjectProperty , owl:NamedIndividual ;
  rdfs:label "previous page" ;
  rdfs:comment "The page preceding the current instance in an interlinked set of PagedCollections" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:PagedCollection ;
  rdfs:domain hydra:PagedCollection ;
  a hydra:Link .

hydra:supportedProperty a owl:ObjectProperty , owl:NamedIndividual ;
  rdfs:label "supported properties" ;
  rdfs:comment "The properties known to be supported by a Hydra class" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:SupportedProperty ;
  rdfs:domain hydra:Class ;
  a hydra:Link .

hydra:search a owl:ObjectProperty , owl:NamedIndividual ;
  rdfs:label "search" ;
  rdfs:comment "A IRI template that can be used to query a collection" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:IriTemplate ;
  a hydra:TemplatedLink .

hydra:apiDocumentation a owl:ObjectProperty , owl:NamedIndividual ;
  rdfs:label "apiDocumentation" ;
  rdfs:comment "A link to the API documentation" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:ApiDocumentation ;
  a hydra:Link .

hydra:lastPage a owl:ObjectProperty , owl:NamedIndividual ;
  rdfs:label "last page" ;
  rdfs:comment "The last page of an interlinked set of PagedCollections" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:PagedCollection ;
  rdfs:domain hydra:PagedCollection ;
  a hydra:Link .

hydra:operation a owl:ObjectProperty , owl:NamedIndividual ;
  rdfs:label "operation" ;
  rdfs:comment "An operation supported by the Hydra resource" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:Operation ;
  rdfs:domain hydra:Resource ;
  a hydra:Link .

hydra:nextPage a owl:ObjectProperty , owl:NamedIndividual ;
  rdfs:label "next page" ;
  rdfs:comment "The page following the current instance in an interlinked set of PagedCollections" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:PagedCollection ;
  rdfs:domain hydra:PagedCollection ;
  a hydra:Link .

hydra:possibleStatus a owl:ObjectProperty , owl:NamedIndividual ;
  rdfs:label "possible status" ;
  rdfs:comment "A status that might be returned by the Web API (other statuses should be expected and properly handled as well)" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:Status ;
  a hydra:Link .

hydra:supportedClass a owl:ObjectProperty , owl:NamedIndividual ;
  rdfs:label "supported classes" ;
  rdfs:comment "A class known to be supported by the Web API" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:Class ;
  rdfs:domain hydra:ApiDocumentation ;
  a hydra:Link .

hydra:supportedOperation a owl:ObjectProperty , owl:NamedIndividual ;
  rdfs:label "supported operation" ;
  rdfs:comment "An operation supported by instances of the specific Hydra class or the target of the Hydra link" ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:Operation ;
  a hydra:Link .

hydra:expects a owl:ObjectProperty , owl:NamedIndividual ;
  rdfs:label "expects" ;
  rdfs:comment "The information expected by the Web API." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:range hydra:Class ;
  rdfs:domain hydra:Operation ;
  a hydra:Link .

hydra:Link a owl:Class ;
  rdfs:label "Link" ;
  rdfs:comment "The class of properties representing links." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Resource , rdf:Property ;
  owl:equivalentClass [
    a owl:Class ;
    owl:oneOf ( hydra:apiDocumentation hydra:expects hydra:supportedClass hydra:entrypoint hydra:operation hydra:supportedProperty hydra:supportedOperation hydra:nextPage hydra:possibleStatus hydra:member hydra:lastPage hydra:previousPage hydra:returns hydra:firstPage )
  ] .

hydra:TemplatedLink a owl:Class ;
  rdfs:label "Templated Link" ;
  rdfs:comment "A templated link." ;
  rdfs:isDefinedBy <http://www.w3.org/ns/hydra/core> ;
  ns:term_status "testing" ;
  rdfs:subClassOf hydra:Resource , rdf:Property ;
  owl:equivalentClass [
    a owl:Class ;
    owl:oneOf ( hydra:search )
  ] .

dcterms:license a owl:AnnotationProperty .

cc:attributionName a owl:AnnotationProperty .

cc:attributionURL a owl:AnnotationProperty .

dcterms:description a owl:AnnotationProperty .

dcterms:publisher a owl:AnnotationProperty .

dcterms:rights a owl:AnnotationProperty .

vann:preferredNamespacePrefix a owl:AnnotationProperty .

vann:preferredNamespaceUri a owl:AnnotationProperty .

ns:term_status a owl:AnnotationProperty .

sh:declare a owl:AnnotationProperty .

sh:prefix a owl:AnnotationProperty .

sh:namespace a owl:AnnotationProperty .
