# RSpec Code Examples

Passed Failed Pending

Web Annotation Vocab
  The JSON-LD context document can be parsed without errors by JSON-LD validators 0.30309s

The JSON-LD context document can be used to convert JSON-LD serialized Annotations into RDF triples
  anno1.json 0.56069s
  lint anno1.json 0.42548s
  anno10.json 0.39919s
  lint anno10.json 0.48348s
  anno11.json 0.41240s
  lint anno11.json 0.53605s
  anno12.json 0.40508s
  lint anno12.json 0.49430s
  anno13.json 0.40935s
  lint anno13.json 0.48180s
  anno14.json 0.41280s
  lint anno14.json 0.47087s
  anno15.json 0.40029s
  lint anno15.json 0.51705s
  anno16.json 0.39632s
  lint anno16.json 0.46520s
  anno17.json 0.39630s
  lint anno17.json 0.43479s
  anno18.json 0.40481s
  lint anno18.json 0.46648s
  anno19.json 0.39744s
  lint anno19.json 0.43402s
  anno2.json 0.40744s
  lint anno2.json 0.44628s
  anno20.json 0.41189s
  lint anno20.json 0.43640s
  anno21.json 0.39995s
  lint anno21.json 0.46148s
  anno22.json 0.40286s
  lint anno22.json 0.44256s
  anno23.json 0.41701s
  lint anno23.json 0.47746s
  anno24.json 0.41397s
  lint anno24.json 0.44446s
  anno25.json 0.39897s
  lint anno25.json 0.44369s
  anno26.json 0.40163s
  lint anno26.json 0.44521s
  anno27.json 0.40337s
  lint anno27.json 0.46172s
  anno28.json 0.40573s
  lint anno28.json 0.44746s
  anno29.json 0.40069s
  lint anno29.json 0.44089s
  anno3.json 0.39832s
  lint anno3.json 0.44832s
  anno30.json 0.40439s
  lint anno30.json 0.47012s
  anno31.json 0.40352s
  lint anno31.json 0.48881s
  anno32.json 0.40521s
  lint anno32.json 0.47565s
  anno33.json 0.39758s
  lint anno33.json 0.42825s
  anno34.json 0.40342s
  lint anno34.json 0.46386s
  anno35.json 0.39727s
  lint anno35.json 0.44666s
  anno36.json 0.40368s
  lint anno36.json 0.50162s
  anno37.json 0.40413s
  lint anno37.json 0.44505s
  anno38.json 0.40365s
  lint anno38.json 0.44806s
  anno39.json 0.39650s
  lint anno39.json 0.45765s
  anno4.json 0.40110s
  lint anno4.json 0.43765s
  anno40.json 0.39694s
  lint anno40.json 0.42795s
  anno41-example44.json 0.42444s
  lint anno41-example44.json 0.82530s
  anno5.json 0.40352s
  lint anno5.json 0.43810s
  anno6.json 0.40099s
  lint anno6.json 0.41499s
  anno7.json 0.39763s
  lint anno7.json 0.45328s
  anno8.json 0.40016s
  lint anno8.json 0.42356s
  anno9.json 0.40070s
  lint anno9.json 0.43877s
  collection1.json 0.75470s
  lint collection1.json 3.15045s
  example41.json 0.39996s
  lint example41.json 0.43951s
  example42.json 0.40507s
  lint example42.json 0.47543s
  example43.json 0.40551s
  lint example43.json 0.50432s

detects errors in incorrect examples
  anno1.json 0.00142s
  anno10.json 0.00076s
  anno11.json 0.19856s
  anno12.json 0.00087s
  anno13.json 0.00075s
  anno14.json 0.00077s
  anno15.json 0.00116s
  anno16.json 0.00074s
  anno17.json 0.00075s
  anno18.json 0.00077s
  anno19.json 0.00071s
  anno2.json (PENDING: Empty Documents are invalid)
  anno20.json 0.00112s
  anno21.json 0.00119s
  anno22.json 0.00106s
  anno23.json 0.00075s
  anno24.json 0.00076s
  anno25.json 0.00066s
  anno26.json 0.19880s
  anno27.json 0.20570s
  anno28.json 0.19991s
  anno29.json 0.19764s
  anno3.json (PENDING: Empty Documents are invalid)
  anno30.json 0.19944s
  anno31.json 0.20036s
  anno32.json 0.19468s
  anno33.json 0.20145s
  anno34.json 0.19786s
  anno35.json 0.19442s
  anno36.json 0.20170s
  anno37.json 0.00073s
  anno38.json 0.19785s
  anno39.json 0.20030s
  anno4.json 0.00247s
  anno5.json 0.11420s
  anno6.json 0.19756s
  anno7.json 0.19826s
  anno8.json 0.19797s
  anno9.json 0.19496s

The ontology documents can be parsed without errors by RDF Schema validators
  JSON-LD version is isomorphic to jsonld 0.33990s
  JSON-LD version is isomorphic to rdfa 0.24762s
  JSON-LD version is isomorphic to rdfxml 0.38899s
  JSON-LD version is isomorphic to ttl 0.47473s

The ontology documents are isomorphic to each other
  rdfa 0.44157s

      Failure/Error: expect(fg).to be_equivalent_graph(vocab_graph)

        Graph entry counts differ:
        expected: 385
        actual:   24

        #<struct RDF::Spec::Matchers::Info id=nil, logger=nil, action=nil, result=nil>
        Expected:
        @prefix dc: <http://purl.org/dc/terms/> .
        @prefix dc11: <http://purl.org/dc/elements/1.1/> .
        @prefix oa: <http://www.w3.org/ns/oa#> .
        @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 skos: <http://www.w3.org/2004/02/skos/core#> .
        @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

        oa:Annotation a rdfs:Class;
           rdfs:label "Annotation";
           rdfs:comment "The class for Web Annotations.";
           rdfs:isDefinedBy oa: .

        oa:Choice a rdfs:Class;
           rdfs:label "Choice";
           rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should select one of the resources in the as:items list to use, rather than all of them. This is typically used to provide a choice of resources to render to the user, based on further supplied properties. If the consuming application cannot determine the user's preference, then it should use the first in the list.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:as:OrderedCollection .

        oa:Composite a rdfs:Class;
           rdfs:label "Composite";
           rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should use all of the resources in the as:items list, but that order is not important. This class is at-risk.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:as:OrderedCollection .

        oa:CssSelector a rdfs:Class;
           rdfs:label "CssSelector";
           rdfs:comment "A CssSelector describes a Segment of interest in a representation that conforms to the Document Object Model through the use of the CSS selector specification.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:CssStyle a rdfs:Class;
           rdfs:label "CssStyle";
           rdfs:comment "A resource which describes styles for resources participating in the Annotation using CSS.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Style .

        oa:DataPositionSelector a rdfs:Class;
           rdfs:label "DataPositionSelector";
           rdfs:comment "DataPositionSelector describes a range of data by recording the start and end positions of the selection in the stream. Position 0 would be immediately before the first byte, position 1 would be immediately before the second byte, and so on. The start byte is thus included in the list, but the end byte is not.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:Direction a rdfs:Class;
           rdfs:label "Direction";
           rdfs:comment "A class to encapsulate the different text directions that a textual resource might take. It is not used directly in the Annotation Model, only its three instances.";
           rdfs:isDefinedBy oa: .

        oa:FragmentSelector a rdfs:Class;
           rdfs:label "FragmentSelector";
           rdfs:comment "The FragmentSelector class is used to record the segment of a representation using the IRI fragment specification defined by the representation's media type.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:HttpRequestState a rdfs:Class;
           rdfs:label "HttpRequestState";
           rdfs:comment "The HttpRequestState class is used to record the HTTP request headers that a client SHOULD use to request the correct representation from the resource.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:State .

        oa:Independents a rdfs:Class;
           rdfs:label "Independents";
           rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that each of the resources in the as:items list are independently associated with all of the other bodies or targets. This class is at-risk.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:as:OrderedCollection .

        oa:List a rdfs:Class;
           rdfs:label "List";
           rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should use each of the resources in the as:items list, and that their order is important. This class is at-risk.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:as:OrderedCollection .

        oa:Motivation a rdfs:Class;
           rdfs:label "Motivation";
           rdfs:comment "The Motivation class is used to record the user's intent or motivation for the creation of the Annotation, or the inclusion of the body or target, that it is associated with.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf skos:Concept .

        oa:RangeSelector a rdfs:Class;
           rdfs:label "RangeSelector";
           rdfs:comment "A Range Selector can be used to identify the beginning and the end of the selection by using other Selectors. The selection consists of everything from the beginning of the starting selector through to the beginning of the ending selector, but not including it.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:ResourceSelection a rdfs:Class;
           rdfs:label "ResourceSelection";
           rdfs:comment "Instances of the ResourceSelection class identify part (described by an oa:Selector) of another resource (referenced with oa:hasSource), possibly from a particular representation of a resource (described by an oa:State). Please note that ResourceSelection is not used directly in the Web Annotation model, but is provided as a separate class for further application profiles to use, separate from oa:SpecificResource which has many Annotation specific features.";
           rdfs:isDefinedBy oa: .

        oa:Selector a rdfs:Class;
           rdfs:label "Selector";
           rdfs:comment "A resource which describes the segment of interest in a representation of a Source resource, indicated with oa:hasSelector from the Specific Resource. This class is not used directly in the Annotation model, only its subclasses.";
           rdfs:isDefinedBy oa: .

        oa:SpecificResource a rdfs:Class;
           rdfs:label "SpecificResource";
           rdfs:comment "Instances of the SpecificResource class identify part of another resource (referenced with oa:hasSource), a particular representation of a resource, a resource with styling hints for renders, or any combination of these, as used within an Annotation.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:ResourceSelection .

        oa:State a rdfs:Class;
           rdfs:label "State";
           rdfs:comment "A State describes the intended state of a resource as applied to the particular Annotation, and thus provides the information needed to retrieve the correct representation of that resource.";
           rdfs:isDefinedBy oa: .

        oa:Style a rdfs:Class;
           rdfs:label "Style";
           rdfs:comment "A Style describes the intended styling of a resource as applied to the particular Annotation, and thus provides the information to ensure that rendering is consistent across implementations.";
           rdfs:isDefinedBy oa: .

        oa:SvgSelector a rdfs:Class;
           rdfs:label "SvgSelector";
           rdfs:comment "An SvgSelector defines an area through the use of the Scalable Vector Graphics [SVG] standard. This allows the user to select a non-rectangular area of the content, such as a circle or polygon by describing the region using SVG. The SVG may be either embedded within the Annotation or referenced as an External Resource.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:TextPositionSelector a rdfs:Class;
           rdfs:label "TextPositionSelector";
           rdfs:comment "The TextPositionSelector describes a range of text by recording the start and end positions of the selection in the stream. Position 0 would be immediately before the first character, position 1 would be immediately before the second character, and so on.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:TextQuoteSelector a rdfs:Class;
           rdfs:label "TextQuoteSelector";
           rdfs:comment "The TextQuoteSelector describes a range of text by copying it, and including some of the text immediately before (a prefix) and after (a suffix) it to distinguish between multiple copies of the same sequence of characters.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:TextualBody a rdfs:Class;
           rdfs:label "TextualBody";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:TimeState a rdfs:Class;
           rdfs:label "TimeState";
           rdfs:comment "A TimeState records the time at which the resource's state is appropriate for the Annotation, typically the time that the Annotation was created and/or a link to a persistent copy of the current version.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:State .

        oa:XPathSelector a rdfs:Class;
           rdfs:label "XPathSelector";
           rdfs:comment "An XPathSelector is used to select elements and content within a resource that supports the Document Object Model via a specified XPath value.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:as:Application a rdfs:Class;
           rdfs:label "as:Application";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:as:OrderedCollection a rdfs:Class;
           rdfs:label "as:OrderedCollection";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:as:OrderedCollectionPage a rdfs:Class;
           rdfs:label "as:OrderedCollectionPage";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:dctypes:Dataset a rdfs:Class;
           rdfs:label "dctypes:Dataset";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:dctypes:MovingImage a rdfs:Class;
           rdfs:label "dctypes:MovingImage";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:dctypes:Sound a rdfs:Class;
           rdfs:label "dctypes:Sound";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:dctypes:StillImage a rdfs:Class;
           rdfs:label "dctypes:StillImage";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:dctypes:Text a rdfs:Class;
           rdfs:label "dctypes:Text";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:foaf:Organization a rdfs:Class;
           rdfs:label "foaf:Organization";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:foaf:Person a rdfs:Class;
           rdfs:label "foaf:Person";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:schema:Audience a rdfs:Class;
           rdfs:label "schema:Audience";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:PreferContainedDescriptions a rdfs:Resource;
           rdfs:label "PreferContainedDescriptions";
           rdfs:comment "An IRI to signal the client prefers to receive full descriptions of the Annotations from a container, not just their IRIs.";
           rdfs:isDefinedBy oa: .

        oa:PreferContainedIRIs a rdfs:Resource;
           rdfs:label "PreferContainedIRIs";
           rdfs:comment "An IRI to signal that the client prefers to receive only the IRIs of the Annotations from a container, not their full descriptions.";
           rdfs:isDefinedBy oa: .

        oa:annotationService a rdf:Property;
           rdfs:label "annotationService";
           rdfs:comment "The object of the relationship is the end point of a service that conforms to the annotation-protocol, and it may be associated with any resource. The expectation of asserting the relationship is that the object is the preferred service for maintaining annotations about the subject resource, according to the publisher of the relationship. This relationship is intended to be used both within Linked Data descriptions and as the rel type of a Link, via HTTP Link Headers rfc5988 for binary resources and in HTML <link> elements. For more information about these, please see the Annotation Protocol specification annotation-protocol.";
           rdfs:isDefinedBy oa: .

        oa:as:first a rdf:Property;
           rdfs:label "as:first";
           rdfs:comment "";
           rdfs:domain oa:as:OrderedCollection;
           rdfs:isDefinedBy oa:;
           rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> .

        oa:as:generator a rdf:Property;
           rdfs:label "as:generator";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:as:items a rdf:Property;
           rdfs:label "as:items";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>;
           rdfs:isDefinedBy oa:;
           rdfs:range rdf:List .

        oa:as:last a rdf:Property;
           rdfs:label "as:last";
           rdfs:comment "";
           rdfs:domain oa:as:OrderedCollection;
           rdfs:isDefinedBy oa:;
           rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> .

        oa:as:next a rdf:Property;
           rdfs:label "as:next";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>;
           rdfs:isDefinedBy oa:;
           rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> .

        oa:as:partOf a rdf:Property;
           rdfs:label "as:partOf";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>;
           rdfs:isDefinedBy oa:;
           rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollection> .

        oa:as:prev a rdf:Property;
           rdfs:label "as:prev";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>;
           rdfs:isDefinedBy oa:;
           rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> .

        oa:as:startIndex a rdf:Property;
           rdfs:label "as:startIndex";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>;
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:nonNegativeInteger .

        oa:as:totalItems a rdf:Property;
           rdfs:label "as:totalItems";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollection>;
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:nonNegativeInteger .

        oa:assessing a oa:Motivation;
           rdfs:label "assessing";
           rdfs:comment "The motivation for when the user intends to provide an assessment about the Target resource.";
           rdfs:isDefinedBy oa: .

        oa:bodyValue a rdf:Property;
           rdfs:label "bodyValue";
           rdfs:comment "The object of the predicate is a plain text string to be used as the content of the body of the Annotation. The value MUST be an xsd:string and that data type MUST NOT be expressed in the serialization. Note that language MUST NOT be associated with the value either as a language tag, as that is only available for rdf:langString .";
           rdfs:domain oa:Annotation;
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:string .

        oa:bookmarking a oa:Motivation;
           rdfs:label "bookmarking";
           rdfs:comment "The motivation for when the user intends to create a bookmark to the Target or part thereof.";
           rdfs:isDefinedBy oa: .

        oa:cachedSource a rdf:Property;
           rdfs:label "cachedSource";
           rdfs:comment "A object of the relationship is a copy of the Source resource's representation, appropriate for the Annotation.";
           rdfs:domain oa:TimeState;
           rdfs:isDefinedBy oa: .

        oa:canonical a rdf:Property;
           rdfs:label "canonical";
           rdfs:comment "A object of the relationship is the canonical IRI that can always be used to deduplicate the Annotation, regardless of the current IRI used to access the representation.";
           rdfs:isDefinedBy oa: .

        oa:classifying a oa:Motivation;
           rdfs:label "classifying";
           rdfs:comment "The motivation for when the user intends to that classify the Target as something.";
           rdfs:isDefinedBy oa: .

        oa:commenting a oa:Motivation;
           rdfs:label "commenting";
           rdfs:comment "The motivation for when the user intends to comment about the Target.";
           rdfs:isDefinedBy oa: .

        oa:describing a oa:Motivation;
           rdfs:label "describing";
           rdfs:comment "The motivation for when the user intends to describe the Target, as opposed to a comment about them.";
           rdfs:isDefinedBy oa: .

        oa:editing a oa:Motivation;
           rdfs:label "editing";
           rdfs:comment "The motivation for when the user intends to request a change or edit to the Target resource.";
           rdfs:isDefinedBy oa: .

        oa:end a rdf:Property;
           rdfs:label "end";
           rdfs:comment "The end property is used to convey the 0-based index of the end position of a range of content.";
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:nonNegativeInteger .

        oa:exact a rdf:Property;
           rdfs:label "exact";
           rdfs:comment "The object of the predicate is a copy of the text which is being selected, after normalization.";
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:string .

        oa:hasBody a rdf:Property;
           rdfs:label "hasBody";
           rdfs:comment "The object of the relationship is a resource that is a body of the Annotation.";
           rdfs:domain oa:Annotation;
           rdfs:isDefinedBy oa: .

        oa:hasEndSelector a rdf:Property;
           rdfs:label "hasEndSelector";
           rdfs:comment "The relationship between a RangeSelector and the Selector that describes the end position of the range.";
           rdfs:domain oa:RangeSelector;
           rdfs:isDefinedBy oa:;
           rdfs:range oa:Selector .

        oa:hasPurpose a rdf:Property;
           rdfs:label "hasPurpose";
           rdfs:comment "The purpose served by the resource in the Annotation.";
           rdfs:isDefinedBy oa:;
           rdfs:range oa:Motivation .

        oa:hasScope a rdf:Property;
           rdfs:label "hasScope";
           rdfs:comment "The scope or context in which the resource is used within the Annotation.";
           rdfs:domain oa:SpecificResource;
           rdfs:isDefinedBy oa: .

        oa:hasSelector a rdf:Property;
           rdfs:label "hasSelector";
           rdfs:comment "The object of the relationship is a Selector that describes the segment or region of interest within the source resource. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model.";
           rdfs:domain oa:ResourceSelection;
           rdfs:isDefinedBy oa:;
           rdfs:range oa:Selector .

        oa:hasSource a rdf:Property;
           rdfs:label "hasSource";
           rdfs:comment "The resource that the ResourceSelection, or its subclass SpecificResource, is refined from, or more specific than. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model.";
           rdfs:domain oa:ResourceSelection;
           rdfs:isDefinedBy oa: .

        oa:hasStartSelector a rdf:Property;
           rdfs:label "hasStartSelector";
           rdfs:comment "The relationship between a RangeSelector and the Selector that describes the start position of the range.";
           rdfs:domain oa:RangeSelector;
           rdfs:isDefinedBy oa:;
           rdfs:range oa:Selector .

        oa:hasState a rdf:Property;
           rdfs:label "hasState";
           rdfs:comment "The relationship between the ResourceSelection, or its subclass SpecificResource, and a State resource. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model.";
           rdfs:domain oa:ResourceSelection;
           rdfs:isDefinedBy oa:;
           rdfs:range oa:State .

        oa:hasTarget a rdf:Property;
           rdfs:label "hasTarget";
           rdfs:comment "The relationship between an Annotation and its Target.";
           rdfs:domain oa:Annotation;
           rdfs:isDefinedBy oa: .

        oa:highlighting a oa:Motivation;
           rdfs:label "highlighting";
           rdfs:comment "The motivation for when the user intends to highlight the Target resource or segment of it.";
           rdfs:isDefinedBy oa: .

        oa:identifying a oa:Motivation;
           rdfs:label "identifying";
           rdfs:comment "The motivation for when the user intends to assign an identity to the Target or identify what is being depicted or described in the Target.";
           rdfs:isDefinedBy oa: .

        oa:linking a oa:Motivation;
           rdfs:label "linking";
           rdfs:comment "The motivation for when the user intends to link to a resource related to the Target.";
           rdfs:isDefinedBy oa: .

        oa:ltrDirection a oa:Direction;
           rdfs:label "ltrDirection";
           rdfs:comment "The direction of text that is read from left to right.";
           rdfs:isDefinedBy oa: .

        oa:moderating a oa:Motivation;
           rdfs:label "moderating";
           rdfs:comment "The motivation for when the user intends to assign some value or quality to the Target.";
           rdfs:isDefinedBy oa: .

        oa:motivatedBy a rdf:Property;
           rdfs:label "motivatedBy";
           rdfs:comment "The relationship between an Annotation and a Motivation that describes the reason for the Annotation's creation.";
           rdfs:domain oa:Annotation;
           rdfs:isDefinedBy oa:;
           rdfs:range oa:Motivation .

        oa:prefix a rdf:Property;
           rdfs:label "prefix";
           rdfs:comment "The object of the property is a snippet of content that occurs immediately before the content which is being selected by the Selector.";
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:string .

        oa:processingLanguage a rdf:Property;
           rdfs:label "processingLanguage";
           rdfs:comment "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.";
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:string .

        oa:questioning a oa:Motivation;
           rdfs:label "questioning";
           rdfs:comment "The motivation for when the user intends to ask a question about the Target.";
           rdfs:isDefinedBy oa: .

        oa:refinedBy a rdf:Property;
           rdfs:label "refinedBy";
           rdfs:comment "The relationship between a Selector and another Selector or a State and a Selector or State that should be applied to the results of the first to refine the processing of the source resource.";
           rdfs:isDefinedBy oa: .

        oa:replying a oa:Motivation;
           rdfs:label "replying";
           rdfs:comment "The motivation for when the user intends to reply to a previous statement, either an Annotation or another resource.";
           rdfs:isDefinedBy oa: .

        oa:rtlDirection a oa:Direction;
           rdfs:label "rtlDirection";
           rdfs:comment "The direction of text that is read from right to left.";
           rdfs:isDefinedBy oa: .

        oa:tagging a oa:Motivation;
           rdfs:label "tagging";
           rdfs:comment "The motivation for when the user intends to associate a tag with the Target.";
           rdfs:isDefinedBy oa: .

        oa: a owl:Ontology;
           dc11:title "Web Annotation Ontology";
           dc:creator "Robert Sanderson",
             "Paolo Ciccarese",
             "Benjamin Young";
           dc:modified "2016-09-30T16:51:18Z";
           rdfs:comment "The Web Annotation ontology defines the terms of the Web Annotation vocabulary. Any changes to this document MUST be from a Working Group in the W3C that has established expertise in the area.";
           rdfs:seeAlso <http://www.w3.org/TR/annotation-vocab/>;
           owl:previousVersionURI <http://www.openannotation.org/spec/core/20130208/oa.owl>;
           owl:versionInfo "2016-09-30T16:51:18Z" .
        Results:
        @prefix dc: <http://purl.org/dc/terms/> .
        @prefix foaf: <http://xmlns.com/foaf/0.1/> .
        @prefix oa: <http://www.w3.org/ns/oa#> .
        @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
        @prefix xhv: <http://www.w3.org/1999/xhtml/vocab#> .
        @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

        <http://www.w3.org/ns/oa> dc:title "Web Annotation Ontology";
           <bibo:editor> [];
           xhv:license <http://www.w3.org/Consortium/Legal/copyright-documents> .

        oa:respecDocument xhv:role xhv:document .

        oa:respecHeader xhv:role xhv:contentinfo .

        ([
           a foaf:Person;
           foaf:homepage <http://www.paolociccarese.info>;
           foaf:mbox <mailto:paolo.ciccarese@gmail.com>;
           foaf:name "Paolo Ciccarese"
         ] [
           a foaf:Person;
           foaf:homepage <http://bigbluehat.com/>;
           foaf:mbox <mailto:byoung@bigbluehat.com>;
           foaf:name "Benjamin Young"
         ]) .

        _:g70220666792480 a foaf:Person;
           foaf:homepage <http://www.stanford.edu/~azaroth/>;
           foaf:mbox <mailto:azaroth42@gmail.com>;
           foaf:name "Robert Sanderson";
           foaf:workplaceHomepage <http://www.stanford.edu/> .

        Debug:

      ./annotation-vocab_spec.rb:83:in `block (4 levels) in <top (required)>'

      81        # XXX Normalize whitespace in literals to ease comparision
      82        fg.each_object {|o| o.squish! if o.literal?}
      83        expect(fg).to be_equivalent_graph(vocab_graph)
      84      end
      85    end
      86# Install the coderay gem to get syntax highlighting

  rdfxml 0.80222s

      Failure/Error: expect(fg).to be_equivalent_graph(vocab_graph)

        Graphs differ

        #<struct RDF::Spec::Matchers::Info id=nil, logger=nil, action=nil, result=nil>
        Expected:
        @prefix dc: <http://purl.org/dc/terms/> .
        @prefix dc11: <http://purl.org/dc/elements/1.1/> .
        @prefix oa: <http://www.w3.org/ns/oa#> .
        @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 skos: <http://www.w3.org/2004/02/skos/core#> .
        @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

        oa:Annotation a rdfs:Class;
           rdfs:label "Annotation";
           rdfs:comment "The class for Web Annotations.";
           rdfs:isDefinedBy oa: .

        oa:Choice a rdfs:Class;
           rdfs:label "Choice";
           rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should select one of the resources in the as:items list to use, rather than all of them. This is typically used to provide a choice of resources to render to the user, based on further supplied properties. If the consuming application cannot determine the user's preference, then it should use the first in the list.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:as:OrderedCollection .

        oa:Composite a rdfs:Class;
           rdfs:label "Composite";
           rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should use all of the resources in the as:items list, but that order is not important. This class is at-risk.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:as:OrderedCollection .

        oa:CssSelector a rdfs:Class;
           rdfs:label "CssSelector";
           rdfs:comment "A CssSelector describes a Segment of interest in a representation that conforms to the Document Object Model through the use of the CSS selector specification.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:CssStyle a rdfs:Class;
           rdfs:label "CssStyle";
           rdfs:comment "A resource which describes styles for resources participating in the Annotation using CSS.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Style .

        oa:DataPositionSelector a rdfs:Class;
           rdfs:label "DataPositionSelector";
           rdfs:comment "DataPositionSelector describes a range of data by recording the start and end positions of the selection in the stream. Position 0 would be immediately before the first byte, position 1 would be immediately before the second byte, and so on. The start byte is thus included in the list, but the end byte is not.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:Direction a rdfs:Class;
           rdfs:label "Direction";
           rdfs:comment "A class to encapsulate the different text directions that a textual resource might take. It is not used directly in the Annotation Model, only its three instances.";
           rdfs:isDefinedBy oa: .

        oa:FragmentSelector a rdfs:Class;
           rdfs:label "FragmentSelector";
           rdfs:comment "The FragmentSelector class is used to record the segment of a representation using the IRI fragment specification defined by the representation's media type.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:HttpRequestState a rdfs:Class;
           rdfs:label "HttpRequestState";
           rdfs:comment "The HttpRequestState class is used to record the HTTP request headers that a client SHOULD use to request the correct representation from the resource.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:State .

        oa:Independents a rdfs:Class;
           rdfs:label "Independents";
           rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that each of the resources in the as:items list are independently associated with all of the other bodies or targets. This class is at-risk.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:as:OrderedCollection .

        oa:List a rdfs:Class;
           rdfs:label "List";
           rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should use each of the resources in the as:items list, and that their order is important. This class is at-risk.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:as:OrderedCollection .

        oa:Motivation a rdfs:Class;
           rdfs:label "Motivation";
           rdfs:comment "The Motivation class is used to record the user's intent or motivation for the creation of the Annotation, or the inclusion of the body or target, that it is associated with.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf skos:Concept .

        oa:RangeSelector a rdfs:Class;
           rdfs:label "RangeSelector";
           rdfs:comment "A Range Selector can be used to identify the beginning and the end of the selection by using other Selectors. The selection consists of everything from the beginning of the starting selector through to the beginning of the ending selector, but not including it.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:ResourceSelection a rdfs:Class;
           rdfs:label "ResourceSelection";
           rdfs:comment "Instances of the ResourceSelection class identify part (described by an oa:Selector) of another resource (referenced with oa:hasSource), possibly from a particular representation of a resource (described by an oa:State). Please note that ResourceSelection is not used directly in the Web Annotation model, but is provided as a separate class for further application profiles to use, separate from oa:SpecificResource which has many Annotation specific features.";
           rdfs:isDefinedBy oa: .

        oa:Selector a rdfs:Class;
           rdfs:label "Selector";
           rdfs:comment "A resource which describes the segment of interest in a representation of a Source resource, indicated with oa:hasSelector from the Specific Resource. This class is not used directly in the Annotation model, only its subclasses.";
           rdfs:isDefinedBy oa: .

        oa:SpecificResource a rdfs:Class;
           rdfs:label "SpecificResource";
           rdfs:comment "Instances of the SpecificResource class identify part of another resource (referenced with oa:hasSource), a particular representation of a resource, a resource with styling hints for renders, or any combination of these, as used within an Annotation.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:ResourceSelection .

        oa:State a rdfs:Class;
           rdfs:label "State";
           rdfs:comment "A State describes the intended state of a resource as applied to the particular Annotation, and thus provides the information needed to retrieve the correct representation of that resource.";
           rdfs:isDefinedBy oa: .

        oa:Style a rdfs:Class;
           rdfs:label "Style";
           rdfs:comment "A Style describes the intended styling of a resource as applied to the particular Annotation, and thus provides the information to ensure that rendering is consistent across implementations.";
           rdfs:isDefinedBy oa: .

        oa:SvgSelector a rdfs:Class;
           rdfs:label "SvgSelector";
           rdfs:comment "An SvgSelector defines an area through the use of the Scalable Vector Graphics [SVG] standard. This allows the user to select a non-rectangular area of the content, such as a circle or polygon by describing the region using SVG. The SVG may be either embedded within the Annotation or referenced as an External Resource.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:TextPositionSelector a rdfs:Class;
           rdfs:label "TextPositionSelector";
           rdfs:comment "The TextPositionSelector describes a range of text by recording the start and end positions of the selection in the stream. Position 0 would be immediately before the first character, position 1 would be immediately before the second character, and so on.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:TextQuoteSelector a rdfs:Class;
           rdfs:label "TextQuoteSelector";
           rdfs:comment "The TextQuoteSelector describes a range of text by copying it, and including some of the text immediately before (a prefix) and after (a suffix) it to distinguish between multiple copies of the same sequence of characters.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:TextualBody a rdfs:Class;
           rdfs:label "TextualBody";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:TimeState a rdfs:Class;
           rdfs:label "TimeState";
           rdfs:comment "A TimeState records the time at which the resource's state is appropriate for the Annotation, typically the time that the Annotation was created and/or a link to a persistent copy of the current version.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:State .

        oa:XPathSelector a rdfs:Class;
           rdfs:label "XPathSelector";
           rdfs:comment "An XPathSelector is used to select elements and content within a resource that supports the Document Object Model via a specified XPath value.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:as:Application a rdfs:Class;
           rdfs:label "as:Application";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:as:OrderedCollection a rdfs:Class;
           rdfs:label "as:OrderedCollection";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:as:OrderedCollectionPage a rdfs:Class;
           rdfs:label "as:OrderedCollectionPage";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:dctypes:Dataset a rdfs:Class;
           rdfs:label "dctypes:Dataset";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:dctypes:MovingImage a rdfs:Class;
           rdfs:label "dctypes:MovingImage";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:dctypes:Sound a rdfs:Class;
           rdfs:label "dctypes:Sound";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:dctypes:StillImage a rdfs:Class;
           rdfs:label "dctypes:StillImage";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:dctypes:Text a rdfs:Class;
           rdfs:label "dctypes:Text";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:foaf:Organization a rdfs:Class;
           rdfs:label "foaf:Organization";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:foaf:Person a rdfs:Class;
           rdfs:label "foaf:Person";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:schema:Audience a rdfs:Class;
           rdfs:label "schema:Audience";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:PreferContainedDescriptions a rdfs:Resource;
           rdfs:label "PreferContainedDescriptions";
           rdfs:comment "An IRI to signal the client prefers to receive full descriptions of the Annotations from a container, not just their IRIs.";
           rdfs:isDefinedBy oa: .

        oa:PreferContainedIRIs a rdfs:Resource;
           rdfs:label "PreferContainedIRIs";
           rdfs:comment "An IRI to signal that the client prefers to receive only the IRIs of the Annotations from a container, not their full descriptions.";
           rdfs:isDefinedBy oa: .

        oa:annotationService a rdf:Property;
           rdfs:label "annotationService";
           rdfs:comment "The object of the relationship is the end point of a service that conforms to the annotation-protocol, and it may be associated with any resource. The expectation of asserting the relationship is that the object is the preferred service for maintaining annotations about the subject resource, according to the publisher of the relationship. This relationship is intended to be used both within Linked Data descriptions and as the rel type of a Link, via HTTP Link Headers rfc5988 for binary resources and in HTML <link> elements. For more information about these, please see the Annotation Protocol specification annotation-protocol.";
           rdfs:isDefinedBy oa: .

        oa:as:first a rdf:Property;
           rdfs:label "as:first";
           rdfs:comment "";
           rdfs:domain oa:as:OrderedCollection;
           rdfs:isDefinedBy oa:;
           rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> .

        oa:as:generator a rdf:Property;
           rdfs:label "as:generator";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:as:items a rdf:Property;
           rdfs:label "as:items";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>;
           rdfs:isDefinedBy oa:;
           rdfs:range rdf:List .

        oa:as:last a rdf:Property;
           rdfs:label "as:last";
           rdfs:comment "";
           rdfs:domain oa:as:OrderedCollection;
           rdfs:isDefinedBy oa:;
           rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> .

        oa:as:next a rdf:Property;
           rdfs:label "as:next";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>;
           rdfs:isDefinedBy oa:;
           rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> .

        oa:as:partOf a rdf:Property;
           rdfs:label "as:partOf";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>;
           rdfs:isDefinedBy oa:;
           rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollection> .

        oa:as:prev a rdf:Property;
           rdfs:label "as:prev";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>;
           rdfs:isDefinedBy oa:;
           rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> .

        oa:as:startIndex a rdf:Property;
           rdfs:label "as:startIndex";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>;
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:nonNegativeInteger .

        oa:as:totalItems a rdf:Property;
           rdfs:label "as:totalItems";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollection>;
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:nonNegativeInteger .

        oa:assessing a oa:Motivation;
           rdfs:label "assessing";
           rdfs:comment "The motivation for when the user intends to provide an assessment about the Target resource.";
           rdfs:isDefinedBy oa: .

        oa:bodyValue a rdf:Property;
           rdfs:label "bodyValue";
           rdfs:comment "The object of the predicate is a plain text string to be used as the content of the body of the Annotation. The value MUST be an xsd:string and that data type MUST NOT be expressed in the serialization. Note that language MUST NOT be associated with the value either as a language tag, as that is only available for rdf:langString .";
           rdfs:domain oa:Annotation;
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:string .

        oa:bookmarking a oa:Motivation;
           rdfs:label "bookmarking";
           rdfs:comment "The motivation for when the user intends to create a bookmark to the Target or part thereof.";
           rdfs:isDefinedBy oa: .

        oa:cachedSource a rdf:Property;
           rdfs:label "cachedSource";
           rdfs:comment "A object of the relationship is a copy of the Source resource's representation, appropriate for the Annotation.";
           rdfs:domain oa:TimeState;
           rdfs:isDefinedBy oa: .

        oa:canonical a rdf:Property;
           rdfs:label "canonical";
           rdfs:comment "A object of the relationship is the canonical IRI that can always be used to deduplicate the Annotation, regardless of the current IRI used to access the representation.";
           rdfs:isDefinedBy oa: .

        oa:classifying a oa:Motivation;
           rdfs:label "classifying";
           rdfs:comment "The motivation for when the user intends to that classify the Target as something.";
           rdfs:isDefinedBy oa: .

        oa:commenting a oa:Motivation;
           rdfs:label "commenting";
           rdfs:comment "The motivation for when the user intends to comment about the Target.";
           rdfs:isDefinedBy oa: .

        oa:describing a oa:Motivation;
           rdfs:label "describing";
           rdfs:comment "The motivation for when the user intends to describe the Target, as opposed to a comment about them.";
           rdfs:isDefinedBy oa: .

        oa:editing a oa:Motivation;
           rdfs:label "editing";
           rdfs:comment "The motivation for when the user intends to request a change or edit to the Target resource.";
           rdfs:isDefinedBy oa: .

        oa:end a rdf:Property;
           rdfs:label "end";
           rdfs:comment "The end property is used to convey the 0-based index of the end position of a range of content.";
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:nonNegativeInteger .

        oa:exact a rdf:Property;
           rdfs:label "exact";
           rdfs:comment "The object of the predicate is a copy of the text which is being selected, after normalization.";
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:string .

        oa:hasBody a rdf:Property;
           rdfs:label "hasBody";
           rdfs:comment "The object of the relationship is a resource that is a body of the Annotation.";
           rdfs:domain oa:Annotation;
           rdfs:isDefinedBy oa: .

        oa:hasEndSelector a rdf:Property;
           rdfs:label "hasEndSelector";
           rdfs:comment "The relationship between a RangeSelector and the Selector that describes the end position of the range.";
           rdfs:domain oa:RangeSelector;
           rdfs:isDefinedBy oa:;
           rdfs:range oa:Selector .

        oa:hasPurpose a rdf:Property;
           rdfs:label "hasPurpose";
           rdfs:comment "The purpose served by the resource in the Annotation.";
           rdfs:isDefinedBy oa:;
           rdfs:range oa:Motivation .

        oa:hasScope a rdf:Property;
           rdfs:label "hasScope";
           rdfs:comment "The scope or context in which the resource is used within the Annotation.";
           rdfs:domain oa:SpecificResource;
           rdfs:isDefinedBy oa: .

        oa:hasSelector a rdf:Property;
           rdfs:label "hasSelector";
           rdfs:comment "The object of the relationship is a Selector that describes the segment or region of interest within the source resource. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model.";
           rdfs:domain oa:ResourceSelection;
           rdfs:isDefinedBy oa:;
           rdfs:range oa:Selector .

        oa:hasSource a rdf:Property;
           rdfs:label "hasSource";
           rdfs:comment "The resource that the ResourceSelection, or its subclass SpecificResource, is refined from, or more specific than. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model.";
           rdfs:domain oa:ResourceSelection;
           rdfs:isDefinedBy oa: .

        oa:hasStartSelector a rdf:Property;
           rdfs:label "hasStartSelector";
           rdfs:comment "The relationship between a RangeSelector and the Selector that describes the start position of the range.";
           rdfs:domain oa:RangeSelector;
           rdfs:isDefinedBy oa:;
           rdfs:range oa:Selector .

        oa:hasState a rdf:Property;
           rdfs:label "hasState";
           rdfs:comment "The relationship between the ResourceSelection, or its subclass SpecificResource, and a State resource. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model.";
           rdfs:domain oa:ResourceSelection;
           rdfs:isDefinedBy oa:;
           rdfs:range oa:State .

        oa:hasTarget a rdf:Property;
           rdfs:label "hasTarget";
           rdfs:comment "The relationship between an Annotation and its Target.";
           rdfs:domain oa:Annotation;
           rdfs:isDefinedBy oa: .

        oa:highlighting a oa:Motivation;
           rdfs:label "highlighting";
           rdfs:comment "The motivation for when the user intends to highlight the Target resource or segment of it.";
           rdfs:isDefinedBy oa: .

        oa:identifying a oa:Motivation;
           rdfs:label "identifying";
           rdfs:comment "The motivation for when the user intends to assign an identity to the Target or identify what is being depicted or described in the Target.";
           rdfs:isDefinedBy oa: .

        oa:linking a oa:Motivation;
           rdfs:label "linking";
           rdfs:comment "The motivation for when the user intends to link to a resource related to the Target.";
           rdfs:isDefinedBy oa: .

        oa:ltrDirection a oa:Direction;
           rdfs:label "ltrDirection";
           rdfs:comment "The direction of text that is read from left to right.";
           rdfs:isDefinedBy oa: .

        oa:moderating a oa:Motivation;
           rdfs:label "moderating";
           rdfs:comment "The motivation for when the user intends to assign some value or quality to the Target.";
           rdfs:isDefinedBy oa: .

        oa:motivatedBy a rdf:Property;
           rdfs:label "motivatedBy";
           rdfs:comment "The relationship between an Annotation and a Motivation that describes the reason for the Annotation's creation.";
           rdfs:domain oa:Annotation;
           rdfs:isDefinedBy oa:;
           rdfs:range oa:Motivation .

        oa:prefix a rdf:Property;
           rdfs:label "prefix";
           rdfs:comment "The object of the property is a snippet of content that occurs immediately before the content which is being selected by the Selector.";
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:string .

        oa:processingLanguage a rdf:Property;
           rdfs:label "processingLanguage";
           rdfs:comment "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.";
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:string .

        oa:questioning a oa:Motivation;
           rdfs:label "questioning";
           rdfs:comment "The motivation for when the user intends to ask a question about the Target.";
           rdfs:isDefinedBy oa: .

        oa:refinedBy a rdf:Property;
           rdfs:label "refinedBy";
           rdfs:comment "The relationship between a Selector and another Selector or a State and a Selector or State that should be applied to the results of the first to refine the processing of the source resource.";
           rdfs:isDefinedBy oa: .

        oa:replying a oa:Motivation;
           rdfs:label "replying";
           rdfs:comment "The motivation for when the user intends to reply to a previous statement, either an Annotation or another resource.";
           rdfs:isDefinedBy oa: .

        oa:rtlDirection a oa:Direction;
           rdfs:label "rtlDirection";
           rdfs:comment "The direction of text that is read from right to left.";
           rdfs:isDefinedBy oa: .

        oa:tagging a oa:Motivation;
           rdfs:label "tagging";
           rdfs:comment "The motivation for when the user intends to associate a tag with the Target.";
           rdfs:isDefinedBy oa: .

        oa: a owl:Ontology;
           dc11:title "Web Annotation Ontology";
           dc:creator "Robert Sanderson",
             "Paolo Ciccarese",
             "Benjamin Young";
           dc:modified "2016-09-30T16:51:18Z";
           rdfs:comment "The Web Annotation ontology defines the terms of the Web Annotation vocabulary. Any changes to this document MUST be from a Working Group in the W3C that has established expertise in the area.";
           rdfs:seeAlso <http://www.w3.org/TR/annotation-vocab/>;
           owl:previousVersionURI <http://www.openannotation.org/spec/core/20130208/oa.owl>;
           owl:versionInfo "2016-09-30T16:51:18Z" .
        Results:
        @prefix dc: <http://purl.org/dc/terms/> .
        @prefix dc11: <http://purl.org/dc/elements/1.1/> .
        @prefix oa: <http://www.w3.org/ns/oa#> .
        @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 skos: <http://www.w3.org/2004/02/skos/core#> .
        @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

        oa:Annotation a rdfs:Class;
           rdfs:label "Annotation";
           rdfs:comment "The class for Web Annotations.";
           rdfs:isDefinedBy oa: .

        oa:Choice a rdfs:Class;
           rdfs:label "Choice";
           rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should select one of the resources in the as:items list to use, rather than all of them. This is typically used to provide a choice of resources to render to the user, based on further supplied properties. If the consuming application cannot determine the user's preference, then it should use the first in the list.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:as:OrderedCollection .

        oa:Composite a rdfs:Class;
           rdfs:label "Composite";
           rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should use all of the resources in the as:items list, but that order is not important. This class is at-risk.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:as:OrderedCollection .

        oa:CssSelector a rdfs:Class;
           rdfs:label "CssSelector";
           rdfs:comment "A CssSelector describes a Segment of interest in a representation that conforms to the Document Object Model through the use of the CSS selector specification.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:CssStyle a rdfs:Class;
           rdfs:label "CssStyle";
           rdfs:comment "A resource which describes styles for resources participating in the Annotation using CSS.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Style .

        oa:DataPositionSelector a rdfs:Class;
           rdfs:label "DataPositionSelector";
           rdfs:comment "DataPositionSelector describes a range of data by recording the start and end positions of the selection in the stream. Position 0 would be immediately before the first byte, position 1 would be immediately before the second byte, and so on. The start byte is thus included in the list, but the end byte is not.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:Direction a rdfs:Class;
           rdfs:label "Direction";
           rdfs:comment "A class to encapsulate the different text directions that a textual resource might take. It is not used directly in the Annotation Model, only its three instances.";
           rdfs:isDefinedBy oa: .

        oa:FragmentSelector a rdfs:Class;
           rdfs:label "FragmentSelector";
           rdfs:comment "The FragmentSelector class is used to record the segment of a representation using the IRI fragment specification defined by the representation's media type.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:HttpRequestState a rdfs:Class;
           rdfs:label "HttpRequestState";
           rdfs:comment "The HttpRequestState class is used to record the HTTP request headers that a client SHOULD use to request the correct representation from the resource.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:State .

        oa:Independents a rdfs:Class;
           rdfs:label "Independents";
           rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that each of the resources in the as:items list are independently associated with all of the other bodies or targets. This class is at-risk.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:as:OrderedCollection .

        oa:List a rdfs:Class;
           rdfs:label "List";
           rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should use each of the resources in the as:items list, and that their order is important. This class is at-risk.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:as:OrderedCollection .

        oa:Motivation a rdfs:Class;
           rdfs:label "Motivation";
           rdfs:comment "The Motivation class is used to record the user's intent or motivation for the creation of the Annotation, or the inclusion of the body or target, that it is associated with.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf skos:Concept .

        oa:RangeSelector a rdfs:Class;
           rdfs:label "RangeSelector";
           rdfs:comment "A Range Selector can be used to identify the beginning and the end of the selection by using other Selectors. The selection consists of everything from the beginning of the starting selector through to the beginning of the ending selector, but not including it.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:ResourceSelection a rdfs:Class;
           rdfs:label "ResourceSelection";
           rdfs:comment "Instances of the ResourceSelection class identify part (described by an oa:Selector) of another resource (referenced with oa:hasSource), possibly from a particular representation of a resource (described by an oa:State). Please note that ResourceSelection is not used directly in the Web Annotation model, but is provided as a separate class for further application profiles to use, separate from oa:SpecificResource which has many Annotation specific features.";
           rdfs:isDefinedBy oa: .

        oa:Selector a rdfs:Class;
           rdfs:label "Selector";
           rdfs:comment "A resource which describes the segment of interest in a representation of a Source resource, indicated with oa:hasSelector from the Specific Resource. This class is not used directly in the Annotation model, only its subclasses.";
           rdfs:isDefinedBy oa: .

        oa:SpecificResource a rdfs:Class;
           rdfs:label "SpecificResource";
           rdfs:comment "Instances of the SpecificResource class identify part of another resource (referenced with oa:hasSource), a particular representation of a resource, a resource with styling hints for renders, or any combination of these, as used within an Annotation.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:ResourceSelection .

        oa:State a rdfs:Class;
           rdfs:label "State";
           rdfs:comment "A State describes the intended state of a resource as applied to the particular Annotation, and thus provides the information needed to retrieve the correct representation of that resource.";
           rdfs:isDefinedBy oa: .

        oa:Style a rdfs:Class;
           rdfs:label "Style";
           rdfs:comment "A Style describes the intended styling of a resource as applied to the particular Annotation, and thus provides the information to ensure that rendering is consistent across implementations.";
           rdfs:isDefinedBy oa: .

        oa:SvgSelector a rdfs:Class;
           rdfs:label "SvgSelector";
           rdfs:comment "An SvgSelector defines an area through the use of the Scalable Vector Graphics [SVG] standard. This allows the user to select a non-rectangular area of the content, such as a circle or polygon by describing the region using SVG. The SVG may be either embedded within the Annotation or referenced as an External Resource.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:TextPositionSelector a rdfs:Class;
           rdfs:label "TextPositionSelector";
           rdfs:comment "The TextPositionSelector describes a range of text by recording the start and end positions of the selection in the stream. Position 0 would be immediately before the first character, position 1 would be immediately before the second character, and so on.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:TextQuoteSelector a rdfs:Class;
           rdfs:label "TextQuoteSelector";
           rdfs:comment "The TextQuoteSelector describes a range of text by copying it, and including some of the text immediately before (a prefix) and after (a suffix) it to distinguish between multiple copies of the same sequence of characters.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:TextualBody a rdfs:Class;
           rdfs:label "TextualBody";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:TimeState a rdfs:Class;
           rdfs:label "TimeState";
           rdfs:comment "A TimeState records the time at which the resource's state is appropriate for the Annotation, typically the time that the Annotation was created and/or a link to a persistent copy of the current version.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:State .

        oa:XPathSelector a rdfs:Class;
           rdfs:label "XPathSelector";
           rdfs:comment "An XPathSelector is used to select elements and content within a resource that supports the Document Object Model via a specified XPath value.";
           rdfs:isDefinedBy oa:;
           rdfs:subClassOf oa:Selector .

        oa:as:Application a rdfs:Class;
           rdfs:label "as:Application";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:as:OrderedCollection a rdfs:Class;
           rdfs:label "as:OrderedCollection";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:as:OrderedCollectionPage a rdfs:Class;
           rdfs:label "as:OrderedCollectionPage";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:dctypes:Dataset a rdfs:Class;
           rdfs:label "dctypes:Dataset";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:dctypes:MovingImage a rdfs:Class;
           rdfs:label "dctypes:MovingImage";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:dctypes:Sound a rdfs:Class;
           rdfs:label "dctypes:Sound";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:dctypes:StillImage a rdfs:Class;
           rdfs:label "dctypes:StillImage";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:dctypes:Text a rdfs:Class;
           rdfs:label "dctypes:Text";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:foaf:Organization a rdfs:Class;
           rdfs:label "foaf:Organization";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:foaf:Person a rdfs:Class;
           rdfs:label "foaf:Person";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:schema:Audience a rdfs:Class;
           rdfs:label "schema:Audience";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:PreferContainedDescriptions a rdfs:Resource;
           rdfs:label "PreferContainedDescriptions";
           rdfs:comment "An IRI to signal the client prefers to receive full descriptions of the Annotations from a container, not just their IRIs.";
           rdfs:isDefinedBy oa: .

        oa:PreferContainedIRIs a rdfs:Resource;
           rdfs:label "PreferContainedIRIs";
           rdfs:comment "An IRI to signal that the client prefers to receive only the IRIs of the Annotations from a container, not their full descriptions.";
           rdfs:isDefinedBy oa: .

        oa:annotationService a rdf:Property;
           rdfs:label "annotationService";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:as:first a rdf:Property;
           rdfs:label "as:first";
           rdfs:comment "";
           rdfs:domain oa:as:OrderedCollection;
           rdfs:isDefinedBy oa:;
           rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> .

        oa:as:generator a rdf:Property;
           rdfs:label "as:generator";
           rdfs:comment "";
           rdfs:isDefinedBy oa: .

        oa:as:items a rdf:Property;
           rdfs:label "as:items";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>;
           rdfs:isDefinedBy oa:;
           rdfs:range rdf:List .

        oa:as:last a rdf:Property;
           rdfs:label "as:last";
           rdfs:comment "";
           rdfs:domain oa:as:OrderedCollection;
           rdfs:isDefinedBy oa:;
           rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> .

        oa:as:next a rdf:Property;
           rdfs:label "as:next";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>;
           rdfs:isDefinedBy oa:;
           rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> .

        oa:as:partOf a rdf:Property;
           rdfs:label "as:partOf";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>;
           rdfs:isDefinedBy oa:;
           rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollection> .

        oa:as:prev a rdf:Property;
           rdfs:label "as:prev";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>;
           rdfs:isDefinedBy oa:;
           rdfs:range <http://www.w3.org/ns/activitystreams#OrderedCollectionPage> .

        oa:as:startIndex a rdf:Property;
           rdfs:label "as:startIndex";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollectionPage>;
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:nonNegativeInteger .

        oa:as:totalItems a rdf:Property;
           rdfs:label "as:totalItems";
           rdfs:comment "";
           rdfs:domain <http://www.w3.org/ns/activitystreams#OrderedCollection>;
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:nonNegativeInteger .

        oa:assessing a oa:Motivation;
           rdfs:label "assessing";
           rdfs:comment "The motivation for when the user intends to provide an assessment about the Target resource.";
           rdfs:isDefinedBy oa: .

        oa:bodyValue a rdf:Property;
           rdfs:label "bodyValue";
           rdfs:comment "The object of the predicate is a plain text string to be used as the content of the body of the Annotation. The value MUST be an xsd:string and that data type MUST NOT be expressed in the serialization. Note that language MUST NOT be associated with the value either as a language tag, as that is only available for rdf:langString .";
           rdfs:domain oa:Annotation;
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:string .

        oa:bookmarking a oa:Motivation;
           rdfs:label "bookmarking";
           rdfs:comment "The motivation for when the user intends to create a bookmark to the Target or part thereof.";
           rdfs:isDefinedBy oa: .

        oa:cachedSource a rdf:Property;
           rdfs:label "cachedSource";
           rdfs:comment "A object of the relationship is a copy of the Source resource's representation, appropriate for the Annotation.";
           rdfs:domain oa:TimeState;
           rdfs:isDefinedBy oa: .

        oa:canonical a rdf:Property;
           rdfs:label "canonical";
           rdfs:comment "A object of the relationship is the canonical IRI that can always be used to deduplicate the Annotation, regardless of the current IRI used to access the representation.";
           rdfs:isDefinedBy oa: .

        oa:classifying a oa:Motivation;
           rdfs:label "classifying";
           rdfs:comment "The motivation for when the user intends to that classify the Target as something.";
           rdfs:isDefinedBy oa: .

        oa:commenting a oa:Motivation;
           rdfs:label "commenting";
           rdfs:comment "The motivation for when the user intends to comment about the Target.";
           rdfs:isDefinedBy oa: .

        oa:describing a oa:Motivation;
           rdfs:label "describing";
           rdfs:comment "The motivation for when the user intends to describe the Target, as opposed to a comment about them.";
           rdfs:isDefinedBy oa: .

        oa:editing a oa:Motivation;
           rdfs:label "editing";
           rdfs:comment "The motivation for when the user intends to request a change or edit to the Target resource.";
           rdfs:isDefinedBy oa: .

        oa:end a rdf:Property;
           rdfs:label "end";
           rdfs:comment "The end property is used to convey the 0-based index of the end position of a range of content.";
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:nonNegativeInteger .

        oa:exact a rdf:Property;
           rdfs:label "exact";
           rdfs:comment "The object of the predicate is a copy of the text which is being selected, after normalization.";
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:string .

        oa:hasBody a rdf:Property;
           rdfs:label "hasBody";
           rdfs:comment "The object of the relationship is a resource that is a body of the Annotation.";
           rdfs:domain oa:Annotation;
           rdfs:isDefinedBy oa: .

        oa:hasEndSelector a rdf:Property;
           rdfs:label "hasEndSelector";
           rdfs:comment "The relationship between a RangeSelector and the Selector that describes the end position of the range.";
           rdfs:domain oa:RangeSelector;
           rdfs:isDefinedBy oa:;
           rdfs:range oa:Selector .

        oa:hasPurpose a rdf:Property;
           rdfs:label "hasPurpose";
           rdfs:comment "The purpose served by the resource in the Annotation.";
           rdfs:isDefinedBy oa:;
           rdfs:range oa:Motivation .

        oa:hasScope a rdf:Property;
           rdfs:label "hasScope";
           rdfs:comment "The scope or context in which the resource is used within the Annotation.";
           rdfs:domain oa:SpecificResource;
           rdfs:isDefinedBy oa: .

        oa:hasSelector a rdf:Property;
           rdfs:label "hasSelector";
           rdfs:comment "The object of the relationship is a Selector that describes the segment or region of interest within the source resource. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model.";
           rdfs:domain oa:ResourceSelection;
           rdfs:isDefinedBy oa:;
           rdfs:range oa:Selector .

        oa:hasSource a rdf:Property;
           rdfs:label "hasSource";
           rdfs:comment "The resource that the ResourceSelection, or its subclass SpecificResource, is refined from, or more specific than. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model.";
           rdfs:domain oa:ResourceSelection;
           rdfs:isDefinedBy oa: .

        oa:hasStartSelector a rdf:Property;
           rdfs:label "hasStartSelector";
           rdfs:comment "The relationship between a RangeSelector and the Selector that describes the start position of the range.";
           rdfs:domain oa:RangeSelector;
           rdfs:isDefinedBy oa:;
           rdfs:range oa:Selector .

        oa:hasState a rdf:Property;
           rdfs:label "hasState";
           rdfs:comment "The relationship between the ResourceSelection, or its subclass SpecificResource, and a State resource. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model.";
           rdfs:domain oa:ResourceSelection;
           rdfs:isDefinedBy oa:;
           rdfs:range oa:State .

        oa:hasTarget a rdf:Property;
           rdfs:label "hasTarget";
           rdfs:comment "The relationship between an Annotation and its Target.";
           rdfs:domain oa:Annotation;
           rdfs:isDefinedBy oa: .

        oa:highlighting a oa:Motivation;
           rdfs:label "highlighting";
           rdfs:comment "The motivation for when the user intends to highlight the Target resource or segment of it.";
           rdfs:isDefinedBy oa: .

        oa:identifying a oa:Motivation;
           rdfs:label "identifying";
           rdfs:comment "The motivation for when the user intends to assign an identity to the Target or identify what is being depicted or described in the Target.";
           rdfs:isDefinedBy oa: .

        oa:linking a oa:Motivation;
           rdfs:label "linking";
           rdfs:comment "The motivation for when the user intends to link to a resource related to the Target.";
           rdfs:isDefinedBy oa: .

        oa:ltrDirection a oa:Direction;
           rdfs:label "ltrDirection";
           rdfs:comment "The direction of text that is read from left to right.";
           rdfs:isDefinedBy oa: .

        oa:moderating a oa:Motivation;
           rdfs:label "moderating";
           rdfs:comment "The motivation for when the user intends to assign some value or quality to the Target.";
           rdfs:isDefinedBy oa: .

        oa:motivatedBy a rdf:Property;
           rdfs:label "motivatedBy";
           rdfs:comment "The relationship between an Annotation and a Motivation that describes the reason for the Annotation's creation.";
           rdfs:domain oa:Annotation;
           rdfs:isDefinedBy oa:;
           rdfs:range oa:Motivation .

        oa:prefix a rdf:Property;
           rdfs:label "prefix";
           rdfs:comment "The object of the property is a snippet of content that occurs immediately before the content which is being selected by the Selector.";
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:string .

        oa:processingLanguage a rdf:Property;
           rdfs:label "processingLanguage";
           rdfs:comment "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.";
           rdfs:isDefinedBy oa:;
           rdfs:range xsd:string .

        oa:questioning a oa:Motivation;
           rdfs:label "questioning";
           rdfs:comment "The motivation for when the user intends to ask a question about the Target.";
           rdfs:isDefinedBy oa: .

        oa:refinedBy a rdf:Property;
           rdfs:label "refinedBy";
           rdfs:comment "The relationship between a Selector and another Selector or a State and a Selector or State that should be applied to the results of the first to refine the processing of the source resource.";
           rdfs:isDefinedBy oa: .

        oa:replying a oa:Motivation;
           rdfs:label "replying";
           rdfs:comment "The motivation for when the user intends to reply to a previous statement, either an Annotation or another resource.";
           rdfs:isDefinedBy oa: .

        oa:rtlDirection a oa:Direction;
           rdfs:label "rtlDirection";
           rdfs:comment "The direction of text that is read from right to left.";
           rdfs:isDefinedBy oa: .

        oa:tagging a oa:Motivation;
           rdfs:label "tagging";
           rdfs:comment "The motivation for when the user intends to associate a tag with the Target.";
           rdfs:isDefinedBy oa: .

        oa: a owl:Ontology;
           dc11:title "Web Annotation Ontology";
           dc:creator "Robert Sanderson",
             "Paolo Ciccarese",
             "Benjamin Young";
           dc:modified "2016-09-30T16:51:18Z";
           rdfs:comment "The Web Annotation ontology defines the terms of the Web Annotation vocabulary. Any changes to this document MUST be from a Working Group in the W3C that has established expertise in the area.";
           rdfs:seeAlso <http://www.w3.org/TR/annotation-vocab/>;
           owl:previousVersionURI <http://www.openannotation.org/spec/core/20130208/oa.owl>;
           owl:versionInfo "2016-09-30T16:51:18Z" .

        Debug:

      ./annotation-vocab_spec.rb:83:in `block (4 levels) in <top (required)>'

      81        # XXX Normalize whitespace in literals to ease comparision
      82        fg.each_object {|o| o.squish! if o.literal?}
      83        expect(fg).to be_equivalent_graph(vocab_graph)
      84      end
      85    end
      86# Install the coderay gem to get syntax highlighting

  ttl 0.48723s

The ontology is internally consistent with respect to domains, ranges, inverses, and any other ontology features specified.
  lints cleanly 2.09350s

      Failure/Error: expect(entailed_graph.lint).to be_empty
        expected `{:property=>{"dc:creator"=>["Object \"Robert Sanderson\" not compatible with range (dc:Agent)", "Obje...mpatible with range (dc:Agent)", "Object \"Benjamin Young\" not compatible with range (dc:Agent)"]}}.empty?` to return true, got false

      ./annotation-vocab_spec.rb:91:in `block (3 levels) in <top (required)>'

      89    it "lints cleanly" do
      90      entailed_graph = vocab_graph.dup.entail!
      91      expect(entailed_graph.lint).to be_empty
      92    end
      93
      94# Install the coderay gem to get syntax highlighting

oa:Annotation
  subClassOf 0.00013s
  equivalentClass 0.00057s

oa:Choice
  subClassOf 0.01390s
  equivalentClass 0.00054s

oa:Composite
  subClassOf 0.00201s
  equivalentClass 0.00046s

oa:CssSelector
  subClassOf 0.00087s
  equivalentClass 0.00049s

oa:CssStyle
  subClassOf 0.00088s
  equivalentClass 0.00049s

oa:DataPositionSelector
  subClassOf 0.00088s
  equivalentClass 0.00059s

oa:Direction
  subClassOf 0.00010s
  equivalentClass 0.00049s

oa:FragmentSelector
  subClassOf 0.00089s
  equivalentClass 0.00047s

oa:HttpRequestState
  subClassOf 0.00090s
  equivalentClass 0.00047s

oa:Independents
  subClassOf 0.00204s
  equivalentClass 0.00046s

oa:List
  subClassOf 0.00220s
  equivalentClass 0.00052s

oa:Motivation
  subClassOf 0.00120s
  equivalentClass 0.00053s

oa:RangeSelector
  subClassOf 0.00093s
  equivalentClass 0.00048s

oa:ResourceSelection
  subClassOf 0.00010s
  equivalentClass 0.00049s

oa:Selector
  subClassOf 0.00010s
  equivalentClass 0.00049s

oa:SpecificResource
  subClassOf 0.00089s
  equivalentClass 0.00050s

oa:State
  subClassOf 0.00010s
  equivalentClass 0.00048s

oa:Style
  subClassOf 0.00010s
  equivalentClass 0.00048s

oa:SvgSelector
  subClassOf 0.00086s
  equivalentClass 0.00050s

oa:TextPositionSelector
  subClassOf 0.00091s
  equivalentClass 0.00049s

oa:TextQuoteSelector
  subClassOf 0.00089s
  equivalentClass 0.00048s

oa:TextualBody
  subClassOf 0.00010s
  equivalentClass 0.00049s

oa:TimeState
  subClassOf 0.00089s
  equivalentClass 0.00049s

oa:XPathSelector
  subClassOf 0.00089s
  equivalentClass 0.00048s

oa:annotationService
  subPropertyOf 0.00011s
  domain 0.00010s
  range 0.00010s
  equivalentProperty 0.00013s

oa:bodyValue
  subPropertyOf 0.00010s
  domain 0.00088s
  range 0.00083s
  equivalentProperty 0.00015s

oa:cachedSource
  subPropertyOf 0.00009s
  domain 0.00089s
  range 0.00010s
  equivalentProperty 0.00012s

oa:canonical
  subPropertyOf 0.00010s
  domain 0.00011s
  range 0.00010s
  equivalentProperty 0.00012s

oa:end
  subPropertyOf 0.00010s
  domain 0.00009s
  range 0.00085s
  equivalentProperty 0.00012s

oa:exact
  subPropertyOf 0.00010s
  domain 0.00010s
  range 0.00092s
  equivalentProperty 0.00012s

oa:hasBody
  subPropertyOf 0.00009s
  domain 0.00090s
  range 0.00010s
  equivalentProperty 0.00013s

oa:hasEndSelector
  subPropertyOf 0.00011s
  domain 0.00089s
  range 0.00089s
  equivalentProperty 0.00013s

oa:hasPurpose
  subPropertyOf 0.00010s
  domain 0.00010s
  range 0.00088s
  equivalentProperty 0.00013s

oa:hasScope
  subPropertyOf 0.00009s
  domain 0.00087s
  range 0.00009s
  equivalentProperty 0.00011s

oa:hasSelector
  subPropertyOf 0.00009s
  domain 0.00088s
  range 0.00088s
  equivalentProperty 0.00013s

oa:hasSource
  subPropertyOf 0.00009s
  domain 0.00088s
  range 0.00009s
  equivalentProperty 0.00012s

oa:hasStartSelector
  subPropertyOf 0.00009s
  domain 0.00088s
  range 0.00088s
  equivalentProperty 0.00013s

oa:hasState
  subPropertyOf 0.00009s
  domain 0.00088s
  range 0.00087s
  equivalentProperty 0.00012s

oa:hasTarget
  subPropertyOf 0.00009s
  domain 0.00088s
  range 0.00009s
  equivalentProperty 0.00013s

oa:motivatedBy
  subPropertyOf 0.00011s
  domain 0.00089s
  range 0.00087s
  equivalentProperty 0.00013s

oa:prefix
  subPropertyOf 0.00010s
  domain 0.00009s
  range 0.00082s
  equivalentProperty 0.00014s

oa:processingLanguage
  subPropertyOf 0.00009s
  domain 0.00012s
  range 0.00085s
  equivalentProperty 0.00012s

oa:refinedBy
  subPropertyOf 0.00009s
  domain 0.00009s
  range 0.00010s
  equivalentProperty 0.00011s

oa:renderedVia
  subPropertyOf 0.00011s
  domain 0.00088s
  range 0.00086s
  equivalentProperty 0.00013s

oa:sourceDate
  subPropertyOf 0.00009s
  domain 0.00087s
  range 0.00081s
  equivalentProperty 0.00011s

oa:sourceDateEnd
  subPropertyOf 0.00010s
  domain 0.00087s
  range 0.00082s
  equivalentProperty 0.00011s

oa:sourceDateStart
  subPropertyOf 0.00009s
  domain 0.00089s
  range 0.00082s
  equivalentProperty 0.00012s

oa:start
  subPropertyOf 0.00009s
  domain 0.00009s
  range 0.00083s
  equivalentProperty 0.00013s

oa:styleClass
  subPropertyOf 0.00009s
  domain 0.00088s
  range 0.00082s
  equivalentProperty 0.00012s

oa:styledBy
  subPropertyOf 0.00010s
  domain 0.00092s
  range 0.00088s
  equivalentProperty 0.00013s

oa:suffix
  subPropertyOf 0.00009s
  domain 0.00010s
  range 0.00081s
  equivalentProperty 0.00012s

oa:textDirection
  subPropertyOf 0.00009s
  domain 0.00009s
  range 0.00088s
  equivalentProperty 0.00012s

oa:via
  subPropertyOf 0.00009s
  domain 0.00009s
  range 0.00011s
  equivalentProperty 0.00011s