@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix s: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#>.

@prefix dc:	<http://purl.org/dc/elements/1.1/>.
@prefix doc:	<http://www.w3.org/2000/10/swap/pim/doc#> .
@prefix :	<http://www.w3.org/2006/gen/ont#> .

@keywords a, is, of.

<>  doc:version "$Id: ont.n3,v 1.8 2009/04/20 10:12:30 timbl Exp $";
    dc:title "An Ontology for Relating Generic and Specific Information Resources";
    s:comment """
    This ontology implements concepts discussed in the Generic URIs 'DesignIsues' note.
    It is also the topic of the W3C TAG issue and a related TAG finding.
    This ontology does not model the fact that representations of a resource can be
    customised as a function of things like user agent, target media,
    the geographical position of the user,
    the preferences of the user, etc.  These could be and can be added.
    The FixedResource class is defined to be specific to ANY variation,
    as is the fixedResource property.
    """;
    doc:creator <http://www.w3.org/People/Berners-Lee/card#i>;
    doc:ipr <http://www.w3.org/2000/10/swap/LICENSE.n3>;
    s:seeAlso <http://www.w3.org/DesignIssues/Generic>.


# ToDo:
#  @@@ Add target media as another dimension


InformationResource a s:Class;
    s:label	"information resource";
    s:comment	"""An Information Resource is defined by the Architecture of
	    the WWW.""".

FixedResource	a s:Class;
    s:subClassOf LanguageSpecificResource,
		    contentTypeSpecificResource,
		    timeSpecificResource;
    s:label "fixed resource";
    s:comment	"""A resource whose representation type and content will not
	    change under any circumstances.""".

#######  Generic and Specific links for dimenions of genericity

LanguageSpecificResource s:subClassOf InformationResource;
    s:label "language-specific resource";
    s:comment """A resource of which all representations are in the
		same natural language.""".

LanguageGenericResource  s:subClassOf InformationResource;
    s:label "language-generic resource";
    s:comment """A resource defiend without constraint as to
	the particular natural language in which it
        maight be expressed.""".

languageGeneric	a rdf:Property;
    s:label "language generic";
    s:domain LanguageSpecificResource;
    s:range  LanguageGenericResource.
    
languageSpecific a rdf:Property;
    s:label "language specific";
    owl:inverseOf languageGeneric;
    s:domain LanguageGenericResource;
    s:range LanguageSpecificResource.

##############  

TimeSpecificResource s:subClassOf InformationResource;
    s:label "version";
    s:comment """A resource of which all representations are in the
		same version.  Representations of the resource will
                not change as a result of th resource neing updated to a
                version with time.  The dates of creation and
                of last modification of such a resource would be
                expected to be the same.""".

TimeGenericResource  s:subClassOf InformationResource;
    s:label "Time-generic resource";
    s:comment """A Information Resource which may have many versions,
    and therfore representations of the resource at different times may vary.""".

timeGeneric	a rdf:Property;
    s:comment   """The related resource which for this time-sepcific resource
            is the related time-generic resource.
            A representation of the time-generic resource may be expected to be
            the most recent time-specific resource at the time of
            the representation.""";
    s:label "time generic";
    s:domain TimeSpecificResource;
    s:range  TimeGenericResource.
    
timeSpecific a rdf:Property;
    s:label "version";
    owl:inverseOf timeGeneric;
    s:domain TimeGenericResource;
    s:range TimeSpecificResource.

##############  

ContentTypeSpecificResource s:subClassOf InformationResource;
    s:label "Content-Type-specific resource";
    s:comment """A resource of which all representations are in the
		same Internet media type, or 'Content-Type'.""".

ContentTypeGenericResource  s:subClassOf InformationResource;
    s:label "Content-Type-generic resource";
    s:comment """A resource which may have representations in
    many different Content-Types.""".

contentTypeGeneric	a rdf:Property;
    s:label "Content-Type generic";
    s:domain ContentTypeSpecificResource;
    s:range  ContentTypeGenericResource.
    
contentTypeSpecific a rdf:Property;
    s:label "Content-Type specific";
    owl:inverseOf ContentTypeGeneric;
    s:domain ContentTypeGenericResource;
    s:range ContentTypeSpecificResource.

#############

fixedResource a rdf:Property;
    s:label "Content-Type specific";
    s:comment """A relation between a generic resource and a fixedResource
    which is an everything-specific version of it.""";
    s:subPropertyOf contentTypeSpecific, timeSpecific, languageSpecific;
    s:domain InformationResource;
    s:range FixedResource.


##############  

#  The equivalence relation linking all generic and specific
#

sameWorkAs a rdf:Property, owl:SymmetricProperty;
    s:label "same work as";
    s:comment """The equivalence relation linking all versions of a work,
            specific or generic along various axes.""";
    s:domain InformationResource;
    s:range InformationResource;
    is s:subPropertyOf of contentTypeSpecific, contentTypeGeneric,
            timeSpecific, timeGeneric,
            languageSpecific, languageGeneric.
    

# ends
