PREFIX eccpubsub: <https://vocab.eccenca.com/pubsub/>
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#>

eccpubsub:HubEndpoint a rdfs:Class ;
  rdfs:label "hub endpoint"@en ;
  rdfs:comment "An HTTP endpoint acting as hub."@en ;
  rdfs:subClassOf eccpubsub:Endpoint .

eccpubsub:Endpoint a rdfs:Class ;
  rdfs:label "endpoint"@en ;
  rdfs:comment "A PubSubHubbub HTTP endpoint. Individuals of this class MUST be referenced by their URL."@en .

<http://xmlns.com/foaf/0.1/Person> a rdfs:Class .

<http://purl.org/dc/terms/Agent> a rdfs:Class .

<http://xmlns.com/foaf/0.1/Organization> a rdfs:Class .

eccpubsub:CallbackEndpoint a rdfs:Class ;
  rdfs:label "callback endpoint"@en ;
  rdfs:comment "An HTTP endpoint acting as callback of a subscriber."@en ;
  rdfs:subClassOf eccpubsub:Endpoint .

eccpubsub:SubscriptionRequest a rdfs:Class ;
  rdfs:label "subscription request"@en ;
  rdfs:comment "A request to a hub by a subscriber indicating interest to updates of a topic."@en .

eccpubsub:deniedReason a rdf:Property ;
  rdfs:label "has reason for denial"@en ;
  rdfs:comment "The reason for which the subscription (request) has been denied."@en ;
  rdfs:range xsd:string .

eccpubsub:topic a rdf:Property ;
  rdfs:label "has topic URI"@en ;
  rdfs:comment "The resource URI for which updates should be published."@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

eccpubsub:requestState a rdf:Property ;
  rdfs:label "has subscription request state"@en ;
  rdfs:comment "The state of a subscription request."@en ;
  rdfs:domain eccpubsub:SubscriptionRequest ;
  rdfs:range eccpubsub:SubscriptionRequestState .

eccpubsub:hub a rdf:Property ;
  rdfs:label "has hub URL"@en ;
  rdfs:comment "The URL of the hub to which the request is addressed."@en ;
  rdfs:domain eccpubsub:SubscriptionRequest ;
  rdfs:range eccpubsub:HubEndpoint .

eccpubsub:Subscription a rdfs:Class ;
  rdfs:label "subscription"@en ;
  rdfs:comment "A unique relation to a topic by a subscriber that indicates it should receive updates for that topic."@en .

eccpubsub:secret a rdf:Property ;
  rdfs:label "has secret"@en ;
  rdfs:comment "A secret string that will be used to compute an HMAC digest for authorized content distribution. If not supplied, the HMAC digest will not be present for content distribution requests."@en ;
  rdfs:domain eccpubsub:Subscription ;
  rdfs:range xsd:string .

eccpubsub:state a rdf:Property ;
  rdfs:label "has subscription state"@en ;
  rdfs:comment "The state of a subscription."@en ;
  rdfs:domain eccpubsub:Subscription ;
  rdfs:range eccpubsub:SubscriptionState .

eccpubsub:callback a rdf:Property ;
  rdfs:label "has callback URL"@en ;
  rdfs:comment "The URL at which a subscriber wishes to receive notifications."@en ;
  rdfs:domain eccpubsub:Subscription ;
  rdfs:range eccpubsub:CallbackEndpoint .

<https://w3id.org/linkml/Any> a rdfs:Class ;
  rdfs:comment "An unconstrained type or object"@en .

<http://usefulinc.com/ns/doap#Specification> a rdfs:Class .

eccpubsub:SubscriptionState a rdfs:Class ;
  rdfs:label "subscription state"@en ;
  rdfs:comment "A state of a subscription."@en .

eccpubsub:SUBSCRIPTION_ACTIVE a eccpubsub:SubscriptionState ;
  rdfs:label "active"@en ;
  rdfs:comment "Indicates that a subscription is valided and verified."@en .

eccpubsub:SUBSCRIPTION_CANCELED a eccpubsub:SubscriptionState ;
  rdfs:label "canceled"@en ;
  rdfs:comment "Indicates that a susbcription was canceled by the subscriber."@en .

eccpubsub:SUBSCRIPTION_DENIED a eccpubsub:SubscriptionState ;
  rdfs:label "denied"@en ;
  rdfs:comment "Indicates that a subscription was denied by a publisher."@en .

eccpubsub:SubscriptionRequestState a rdfs:Class ;
  rdfs:label "subscription request state"@en ;
  rdfs:comment "A state of a subscription request."@en .

eccpubsub:SUBSCRIPTION_REQUEST_PENDING a eccpubsub:SubscriptionRequestState ;
  rdfs:label "request pending"@en ;
  rdfs:comment "Indicates that a subscription request was successfully sent to the hub but is not yet verified."@en .

eccpubsub:SUBSCRIPTION_REQUEST_VERIFIED a eccpubsub:SubscriptionRequestState ;
  rdfs:label "request verified"@en ;
  rdfs:comment "Indicates that a subscription request was successfully validated and verified."@en .

eccpubsub:SUBSCRIPTION_REQUEST_DENIED a eccpubsub:SubscriptionRequestState ;
  rdfs:label "request denied"@en ;
  rdfs:comment "Indicates that a subscription request was denied."@en .

eccpubsub:SUBSCRIPTION_REQUEST_CANCELED a eccpubsub:SubscriptionRequestState ;
  rdfs:label "request canceled"@en ;
  rdfs:comment "Indicates that a subscription cancellation request was successfully sent to the hub but is not yet verified."@en .

eccpubsub:SUBSCRIPTION_REQUEST_DELETED a eccpubsub:SubscriptionRequestState ;
  rdfs:label "request deleted"@en ;
  rdfs:comment "Indicates that a subscription cancellation request was successfully verified."@en .
