Skip to content

Instantly share code, notes, and snippets.

@nyarly
Created January 3, 2014 18:48
Show Gist options
  • Save nyarly/8243908 to your computer and use it in GitHub Desktop.
Save nyarly/8243908 to your computer and use it in GitHub Desktop.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
<Affordance> a rdfs:Class ;
rdfs:comment "Base class for all affordances" .
<Null> a rdfs:Class ;
rdfs:subClassOf <Affordance> ;
rdfs:comment "The provided affordance is null. i.e. not dereferenceable, no actions provided".
<Safe> a rdfs:Class ;
rdfs:subClassOf <Affordance> ;
rdfs:comment "A safe affordance - it is asserted that no change will be triggered by activating the affordance" .
<Navigation> a rdfs:Class ;
rdfs:subClassOf <Safe> ;
rdfs:comment "A link to another resource. The assumption is that otherwise undescribed URLs have a navigation affordance" .
<Embed> a rdfs:Class ;
rdfs:subClassOf <Safe> ;
rdfs:comment "A resource that should be properly displayed in-line rather than provided as a hyperlink" .
<Metadata> a rdfs:Class ;
rdfs:subClassOf <Safe> ;
rdfs:comment "There is extra metadata available about this resource" .
<Idempotent> a rdfs:Class ;
rdfs:subClassOf <Affordance> ;
rdfs:comment "An affordance that will cause a change, but that can be repeated without further hazard" .
<Update> a rdfs:Class ;
rdfs:subClassOf <Idempotent> ;
rdfs:comment "Acting on this affordance will update the targeted resource. Repeated updates will have not further effect" .
<Remove> a rdfs:Class ;
rdfs:subClassOf <Idempotent> ;
rdfs:comment "Triggering this affordance is a request to delete the resource" .
<Unsafe> a rdfs:Class ;
rdfs:subClassOf <Affordance> ;
rdfs:comment "Affordances whose effects cannot be simply modeled and should be triggered with care" .
<Create> a rdfs:Class ;
rdfs:subClassOf <Unsafe> ;
rdfs:comment """Triggering this affordance implies a request to create a new
resource""" .
#Consider: <Append> - distinct from <Create> in that the implication is
#specifically to create a child (or otherwise related) resource to the target, where <Create> might
#specifically mean "create this resource" - review Fielding & 2616
<Mutate> a rdfs:Class ;
rdfs:subClassOf <Unsafe> ;
rdfs:comment """Triggering this affordance expresses a desire to make changes
to a resource""" .
# Controls
<controlledBy> a rdf:Property ;
rdfs:domain <Affordance> ;
rdfs:range <Control> .
<Control> a rdfs:Class .
<controlName> a rdf:Property ;
rdfs:domain <Control> ;
rdfs:range rdfs:Literal ;
rdfs:comment "Valid values are limited per application. Examples include 'Media-Type', 'Encoding' or 'EntityTag'" .
<controlValue> a rdf:Property ;
rdfs:domain <Control> ;
rdfs:range rdfs:Literal .
# Authorization
<authorizedBy> a rdf:Property ;
rdfs:domain <Affordance> ;
rdfs:range rdfs:Resource ;
rdfs:comment """Opaque descriptors of authorization tokens - resource can be
dereferenced by users with that token. It's recommended that the tokens be
defreferenceable, and that they be accessible iff the user is authorized to
activate the affordance in question.""" .
# Target
<target> a rdf:Property ;
rdfs:domain <Affordance> ;
rdfs:range rdfs:Resource ;
rdfs:range rdfs:Literal ;
rdfs:comment """Could be a templated URL, or a URL resource. If not a template,
but the Affordance has one or more uriVariable properties, the implication is
that the target resource should be used as the basis of a URI template by
appending (?name,other,...) to the URI.""" .
<Parameter> a rdfs:Class .
<uriVariable> a rdf:Property ;
rdfs:domain <Affordance> ;
rdfs:range <Parameter> , rdf:List ;
rdfs:comment """When the object is list, the members of the list should be
Parameters, the the list order implies the order in which the parameters
should be used""" .
<parameterName> a rdf:Property ;
rdfs:domain <Parameter> ;
rdfs:range rdfs:Literal .
<parameterRange> a rdf:Property ;
rdfs:domain <Parameter> ;
rdfs:range rdfs:Class .
# Payload
<payload> a rdf:Property ;
rdfs:domain <Affordance> ;
rdfs:range rdfs:Resource ;
rdfs:comment """Points to a the name of a named graph that describes the
possible payload of the affordance. Graph might need a different entailment -
allowing e.g. a blank node to be the object of a property whose domain is
Literal... i.e. only using RDF entailment, not RDFS""" .
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment