Hi: Funny you should just have asked that Bruce. I was just looking for (and just found) an early OWL spec for ContextObject which I was noodling with back in '03. (Tempus fugit.)
I haven't reviewed this at all, so be kind. Was just an early attempt to model CO with OWL. Oh, I notice it uses the earlier homegrown identifiers (ori/uri/xri) that wecontemtplated in OenURL before firmly switching to URI. May be less than useless. Cheers, Tony === <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE owl [ <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#"> <!ENTITY owl "http://www.w3.org/2002/07/owl#"> <!ENTITY xsd "http://www.w3.org/2000/10/XMLSchema#"> ]> <!-- OpenURL Framework - ContextObject Format This document presents an Ontology that defines a ContextObject Format for the OpenURL Framework using the Web Ontology Language (OWL) == Author: Tony Hammond <t...@tonyhammond.net> Date: 27-02-2003 --> <r:RDF xmlns:r="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:s="http://www.w3.org/2000/01/rdf-schema#" xmlns:o="http://www.w3.org/2002/07/owl#" xmlns:d="http://purl.org/dc/elements/1.1/" xmlns:t="http://purl.org/dc/terms/" > <o:Ontology r:about=""> <o:versionInfo>OpenURL 1.0</o:versionInfo> <s:comment>An Ontology for ContextObjects.</s:comment> <s:comment>OpenURL Framework Identifier - xri:fmt:xml:owl:ctx</s:comment> <o:imports r:resource="http://www.w3.org/2002/07/owl#"/> <d:title>ContextObject Format</d:title> <d:creator>Tony Hammond</d:creator> <d:description>This Ontology defines a Format to express one or more ContextObjects as an XML document.</d:description> <d:identifier>xri:fmt:xml:owl:ctx</d:identifier> <t:created>2003-02-27</t:created> </o:Ontology> <!-- ContextObject ~ --> <!-- "ContextObject" class --> <o:Class r:ID="ContextObject"> <s:label>ContextObject</s:label> <s:comment>An information construct that binds a description of a primary Entity - the referenced resource - together with descriptions of Entities that indicate the context of the reference to the referenced resource.</s:comment> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#hasAdmin"/> <o:cardinality r:datatype="&xsd;nonNegativeInteger">1</o:cardinality> </o:Restriction> </s:subClassOf> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#hasCommunityAdmin"/> <o:cardinality r:datatype="&xsd;nonNegativeInteger">1</o:cardinality> </o:Restriction> </s:subClassOf> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#hasReferent"/> <o:cardinality r:datatype="&xsd;nonNegativeInteger">1</o:cardinality> </o:Restriction> </s:subClassOf> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#hasReferringEntity"/> <o:minCardinality r:datatype="&xsd;nonNegativeInteger">0</o:minCardinality> </o:Restriction> </s:subClassOf> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#hasReferringEntity"/> <o:maxCardinality r:datatype="&xsd;nonNegativeInteger">1</o:maxCardinality> </o:Restriction> </s:subClassOf> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#hasRequester"/> <o:minCardinality r:datatype="&xsd;nonNegativeInteger">0</o:minCardinality> </o:Restriction> </s:subClassOf> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#hasRequester"/> <o:maxCardinality r:datatype="&xsd;nonNegativeInteger">1</o:maxCardinality> </o:Restriction> </s:subClassOf> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#hasReferrer"/> <o:cardinality r:datatype="&xsd;nonNegativeInteger">1</o:cardinality> </o:Restriction> </s:subClassOf> </o:Class> <!-- Admin ~ --> <!-- "Admin" class --> <o:Class r:ID="Admin"> <s:label>Admin</s:label> <s:comment>Administrative information can be attached to the "ContextObject" resource.</s:comment> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#hasAdminVersion"/> <o:maxCardinality r:datatype="&xsd;nonNegativeInteger">1</o:maxCardinality> </o:Restriction> </s:subClassOf> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#hasAdminEncoding"/> <o:maxCardinality r:datatype="&xsd;nonNegativeInteger">1</o:maxCardinality> </o:Restriction> </s:subClassOf> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#hasAdminId"/> <o:maxCardinality r:datatype="&xsd;nonNegativeInteger">1</o:maxCardinality> </o:Restriction> </s:subClassOf> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#hasAdminTimestamp"/> <o:maxCardinality r:datatype="&xsd;nonNegativeInteger">1</o:maxCardinality> </o:Restriction> </s:subClassOf> </o:Class> <!-- Object Properties - Admin ~ --> <!-- "hasAdmin" property --> <o:ObjectProperty r:ID="hasAdmin"> <s:label>hasAdmin</s:label> <s:comment>Property attributing an "Admin" object.</s:comment> <s:domain r:resource="#ContextObject"/> <s:range r:resource="#Admin"/> </o:ObjectProperty> <!-- Datatype Properties - Admin ~ --> <!-- "hasAdminVersion" property --> <o:DatatypeProperty r:ID="hasAdminVersion"> <s:label>hasAdminVersion</s:label> <s:comment>Property attributing an "AdminVersion" datatype.</s:comment> <r:type r:resource="&owl;FunctionalProperty"/> <s:domain r:resource="#Admin"/> <s:range r:resource="&xsd;string"/> </o:DatatypeProperty> <!-- "hasAdminEncoding" property --> <o:DatatypeProperty r:ID="hasAdminEncoding"> <s:label>hasAdminEncoding</s:label> <s:comment>Property attributing an "AdminEncoding" datatype.</s:comment> <r:type r:resource="&owl;FunctionalProperty"/> <s:domain r:resource="#Admin"/> <s:range r:resource="&xsd;string"/> </o:DatatypeProperty> <!-- "hasAdminId" property --> <o:DatatypeProperty r:ID="hasAdminId"> <s:label>hasAdminId</s:label> <s:comment>Property attributing an "AdminId" datatype.</s:comment> <r:type r:resource="&owl;FunctionalProperty"/> <s:domain r:resource="#Admin"/> <s:range r:resource="&xsd;string"/> </o:DatatypeProperty> <!-- "hasAdminTimestamp" property --> <o:DatatypeProperty r:ID="hasAdminTimestamp"> <s:label>hasAdminTimestamp</s:label> <s:comment>Property attributing an "AdminTimestamp" datatype.</s:comment> <r:type r:resource="&owl;FunctionalProperty"/> <s:domain r:resource="#Admin"/> <s:range r:resource="&xsd;dateTime"/> </o:DatatypeProperty> <!-- CommunityAdmin ~ --> <!-- "CommunityAdmin" class --> <o:Class r:ID="CommunityAdmin"> <s:label>CommunityAdmin</s:label> <s:comment>Administrative information can be attached to the "ContextObject" resource. Its content can be defined by communities of implementers.</s:comment> </o:Class> <!-- Object Properties - CommunityAdmin ~ --> <!-- "hasCommunityAdmin" property --> <o:ObjectProperty r:ID="hasCommunityAdmin"> <s:label>hasCommunityAdmin</s:label> <s:comment>Property attributing a "CommunityAdmin" resource.</s:comment> <s:domain r:resource="#ContextObject"/> <s:range r:resource="#CommunityAdmin"/> </o:ObjectProperty> <!-- Entities ~ --> <!-- "Entity" class - Base class for subclassing Entities --> <o:Class r:ID="Entity"> <s:label>Entity</s:label> <s:comment>One of the six possible constituents of a ContextObject: Referent, Requester, Referrer, Resolver, ReferringEntity, or ServiceType.</s:comment> <o:intersectionOf r:parseType="Collection"> <o:Class r:about="#Referent"/> <o:Class r:about="#ReferringEntity"/> <o:Class r:about="#Requester"/> <o:Class r:about="#ServiceType"/> <o:Class r:about="#Resolver"/> <o:Class r:about="#Referrer"/> </o:intersectionOf> </o:Class> <!-- "Referent" Entity --> <o:Class r:ID="Referent"> <s:label>Referent</s:label> <s:comment>The Entity about which the ContextObject was created - a referenced resource.</s:comment> <s:subClassOf r:resource="#Entity"/> </o:Class> <!-- "ReferringEntity" Entity --> <o:Class r:ID="ReferringEntity"> <s:label>ReferringEntity</s:label> <s:comment>The Entity that references the Referent.</s:comment> <s:subClassOf r:resource="#Entity"/> </o:Class> <!-- "Requester" Entity --> <o:Class r:ID="Requester"> <s:label>Requester</s:label> <s:comment>The Entity that requests services pertaining to the Referent.</s:comment> <s:subClassOf r:resource="#Entity"/> </o:Class> <!-- "ServiceType" Entity --> <o:Class r:ID="ServiceType"> <s:label>ServiceType</s:label> <s:comment>The Entity that defines the type of service requested.</s:comment> <s:subClassOf r:resource="#Entity"/> </o:Class> <!-- "Resolver" Entity --> <o:Class r:ID="Resolver"> <s:label>Resolver</s:label> <s:comment>The Entity at which a request for services is targeted.</s:comment> <s:subClassOf r:resource="#Entity"/> </o:Class> <!-- "Referrer" Entity --> <o:Class r:ID="Referrer"> <s:label>Referrer</s:label> <s:comment>The Entity that generated the ContextObject.</s:comment> <s:subClassOf r:resource="#Entity"/> </o:Class> <!-- Object Properties - Entities ~ --> <!-- "hasEntity" property --> <o:ObjectProperty r:ID="hasEntity"> <s:label>hasEntity</s:label> <s:comment>Property attributing an "Entity" resource.</s:comment> <s:domain r:resource="#ContextObject"/> <s:range r:resource="#Entity"/> </o:ObjectProperty> <!-- "hasReferent" property --> <o:ObjectProperty r:ID="hasReferent"> <s:label>hasReferent</s:label> <s:comment>Property attributing a "Referent" resource.</s:comment> <s:subPropertyOf r:resource="#hasEntity"/> <s:range r:resource="#Referent"/> </o:ObjectProperty> <!-- "hasReferringEntity" property --> <o:ObjectProperty r:ID="hasReferringEntity"> <s:label>hasReferringEntity</s:label> <s:comment>Property attributing a "ReferringEntity" resource.</s:comment> <s:subPropertyOf r:resource="#hasEntity"/> <s:range r:resource="#ReferringEntity"/> </o:ObjectProperty> <!-- "hasRequester" property --> <o:ObjectProperty r:ID="hasRequester"> <s:label>hasRequester</s:label> <s:comment>Property attributing a "Requester" resource.</s:comment> <s:subPropertyOf r:resource="#hasEntity"/> <s:range r:resource="#Requester"/> </o:ObjectProperty> <!-- "hasResolver" property --> <o:ObjectProperty r:ID="hasResolver"> <s:label>hasResolver</s:label> <s:comment>Property attributing a "Resolver" resource.</s:comment> <s:subPropertyOf r:resource="#hasEntity"/> <s:range r:resource="#Resolver"/> </o:ObjectProperty> <!-- "hasServiceType" property --> <o:ObjectProperty r:ID="hasServiceType"> <s:label>hasServiceType</s:label> <s:comment>Property attributing a "ServiceType" resource.</s:comment> <s:subPropertyOf r:resource="#hasEntity"/> <s:range r:resource="#ServiceType"/> </o:ObjectProperty> <!-- "hasReferrer" property --> <o:ObjectProperty r:ID="hasReferrer"> <s:label>hasReferrer</s:label> <s:comment>Property attributing a "Referrer" resource.</s:comment> <s:subPropertyOf r:resource="#hasEntity"/> <s:range r:resource="#Referrer"/> </o:ObjectProperty> <!-- Descriptors ~ --> <!-- "Descriptor" class - Base class for subclassing Descriptors --> <o:Class r:ID="Descriptor"> <s:label>Descriptor</s:label> <s:comment>A Descriptor details information about an Entity, using one of the following four methods: Identifier, By-Reference Metadata, By-Value Metadata, Private Data.</s:comment> <o:intersectionOf r:parseType="Collection"> <o:Class r:about="#Identifier"/> <o:Class r:about="#MetadataByVal"/> <o:Class r:about="#MetadataByRef"/> <o:Class r:about="#PrivateData"/> </o:intersectionOf> </o:Class> <!-- "Identifier" Descriptor --> <o:Class r:ID="Identifier"> <s:label>Identifier</s:label> <s:comment>A Descriptor that unambiguously defines an Entity by the combination of: (1) a reference to a Namespace; and (2) a value within that Namespace.</s:comment> <s:subClassOf r:resource="#Descriptor"/> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#isaIdentifier"/> <o:cardinality r:datatype="&xsd;nonNegativeInteger">1</o:cardinality> </o:Restriction> </s:subClassOf> </o:Class> <!-- "MetadataByVal" Descriptor --> <o:Class r:ID="MetadataByVal"> <s:label>MetadataByVal</s:label> <s:comment>A Descriptor that details properties of an Entity by the combination of: (1) a reference to a Metadata Format; and (2) a particular instance of metadata about the Entity, expressed according to the indicated Metadata Format.</s:comment> <s:subClassOf r:resource="#Descriptor"/> <s:comment>By-Value Metadata is provided as the combination of (1) a 'format' resource, which identifies the Metadata Format of the By-Value Metadata, and (2) a 'metadata' resource in which the metadata corresponding to the identified Metadata Format is contained.</s:comment> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#isaFormat"/> <o:cardinality r:datatype="&xsd;nonNegativeInteger">1</o:cardinality> </o:Restriction> </s:subClassOf> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#isaMetadata"/> <o:cardinality r:datatype="&xsd;nonNegativeInteger">1</o:cardinality> </o:Restriction> </s:subClassOf> </o:Class> <!-- "MetadataByRef" Descriptor --> <o:Class r:ID="MetadataByRef"> <s:label>MetadataByRef</s:label> <s:comment>A Descriptor that details properties of an Entity by the combination of: (1) a reference to a Metadata Format; and (2) the network location of a particular instance of metadata about the Entity, the metadata being expressed according to the indicated Metadata Format.</s:comment> <s:subClassOf r:resource="#Descriptor"/> <s:comment>By-Reference Metadata is provided as the combination of (1) a 'format' resource, which identifies the Metadata Format of the By-Reference Metadata, and (2) a 'location' resource that specifies the network-location of the By-Reference Metadata. That network-location must be a URL, and therefore it must be specified as an Identifier in the URI Naming Environment; it must have a prefix of 'uri'.</s:comment> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#isaFormat"/> <o:cardinality r:datatype="&xsd;nonNegativeInteger">1</o:cardinality> </o:Restriction> </s:subClassOf> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#isaLocation"/> <o:cardinality r:datatype="&xsd;nonNegativeInteger">1</o:cardinality> </o:Restriction> </s:subClassOf> </o:Class> <!-- "PrivateData" Descriptor --> <o:Class r:ID="PrivateData"> <s:label>PrivateData</s:label> <s:comment>A Descriptor that details information about an Entity using a method not defined in this Standard.</s:comment> <s:subClassOf r:resource="#Descriptor"/> <s:subClassOf> <o:Restriction> <o:onProperty r:resource="#isaData"/> <o:cardinality r:datatype="&xsd;nonNegativeInteger">1</o:cardinality> </o:Restriction> </s:subClassOf> </o:Class> <!-- Object Properties - Descriptors ~ --> <!-- "hasDescriptor" property --> <o:ObjectProperty r:ID="hasDescriptor"> <s:label>hasDescriptor</s:label> <s:comment>Property attributing a "Descriptor" resource.</s:comment> <s:domain r:resource="#Entity"/> <s:range r:resource="#Descriptor"/> </o:ObjectProperty> <!-- "hasIdentifier" property --> <o:ObjectProperty r:ID="hasIdentifier"> <s:label>hasIdentifier</s:label> <s:comment>Property attributing a "Identifier" resource.</s:comment> <s:range r:resource="#Identifier"/> </o:ObjectProperty> <!-- "hasMetadataByVal" property --> <o:ObjectProperty r:ID="hasMetadataByVal"> <s:label>hasMetadataByVal</s:label> <s:comment>Property attributing a "MetadataByVal" resource.</s:comment> <s:range r:resource="#MetadataByVal"/> </o:ObjectProperty> <!-- "hasMetadataByRef" property --> <o:ObjectProperty r:ID="hasMetadataByRef"> <s:label>hasMetadataByRef</s:label> <s:comment>Property attributing a "MetadataByRef" resource.</s:comment> <s:range r:resource="#MetadataByRef"/> </o:ObjectProperty> <!-- "hasPrivateData" property --> <o:ObjectProperty r:ID="hasPrivateData"> <s:label>hasPrivateData</s:label> <s:comment>Property attributing a "PrivateData" resource.</s:comment> <s:range r:resource="#PrivateData"/> </o:ObjectProperty> <!-- DatatypeProperties ~ --> <!-- "hasId" property --> <o:DatatypeProperty r:ID="hasId"> <s:label>hasId</s:label> <s:comment>Property attributing an "Id" datatype (a string).</s:comment> <s:comment>In the OpenURL Framework, Identifier Descriptors for Entities are in one of three Naming Environments: (1) URI Naming Environment: Identifiers from IANA registered URI schemes - the prefix 'uri' is used, (2) ORI Naming Environment: Identifiers from namespaces registered in the Registry at http://www.openurl.info/ori/ - the prefix 'ori' is used (3) XRI Naming Environment: Identifiers that are specific to the Referrer environment - the prefix 'xri' is used.</s:comment> <r:type r:resource="&owl;FunctionalProperty"/> <s:domain r:resource="#Identifier"/> <s:range r:resource="&xsd;anyURI"/> </o:DatatypeProperty> <!-- "hasFormat" property --> <o:DatatypeProperty r:ID="hasFormat"> <s:label>hasFormat</s:label> <s:comment>Property attributing a "Format" datatype.</s:comment> <s:range r:resource="&xsd;string"/> </o:DatatypeProperty> <!-- "hasMetadata" property --> <o:DatatypeProperty r:ID="hasMetadata"> <s:label>hasMetadata</s:label> <s:comment>Property attributing a "Metadata" datatype (a string).</s:comment> <s:range r:resource="&xsd;string"/> </o:DatatypeProperty> <!-- "hasLocation" property --> <o:DatatypeProperty r:ID="hasLocation"> <s:label>hasLocation</s:label> <s:comment>Property attributing a "Location" datatype (a URI).</s:comment> <s:comment>The content of the location resource is a URL. As a URL is an Identifier in the URI Naming Environment, the location must have the 'uri' prefix</s:comment> <s:range r:resource="&xsd;anyURI"/> </o:DatatypeProperty> <!-- "hasData" property --> <o:DatatypeProperty r:ID="hasData"> <s:label>hasData</s:label> <s:comment>Property attributing a "Data" datatype (a string).</s:comment> <r:type r:resource="&owl;FunctionalProperty"/> <s:range r:resource="&xsd;string"/> </o:DatatypeProperty> </r:RDF> === On 24/6/09 16:01, "Bruce D'Arcus" <bdarcus.li...@gmail.com> wrote: > > On Tue, Jun 23, 2009 at 11:51 AM, Eric Hellman<open...@gmail.com> wrote: > >> Yes, it would seem that BIBO is in the same space; I need to look at it more >> to see what the fit is. I wonder if Bruce is still on this list. > > Yes. My publications are encoded in BIBO RDFa over at my site if > you're curious (though it probably needs a little work): > > <http://bruce.darcus.name/publications/> > >> I think you would need both the ContextObject and the metadata formats. > > I confess to being entirely skeptical about OpenURL, but it may be > that I just don't understand it. What would a ContextObject look like > in the context of idiomatic RDF/RDFa/BIBO/DC? > > Bruce > > > ******************************************************************************** DISCLAIMER: This e-mail is confidential and should not be used by anyone who is not the original intended recipient. If you have received this e-mail in error please inform the sender and delete it from your mailbox or any other storage mechanism. Neither Macmillan Publishers Limited nor any of its agents accept liability for any statements made which are clearly the sender's own and not expressly made on behalf of Macmillan Publishers Limited or one of its agents. Please note that neither Macmillan Publishers Limited nor any of its agents accept any responsibility for viruses that may be contained in this e-mail or its attachments and it is your responsibility to scan the e-mail and attachments (if any). No contracts may be concluded on behalf of Macmillan Publishers Limited or its agents by means of e-mail communication. Macmillan Publishers Limited Registered in England and Wales with registered number 785998 Registered Office Brunel Road, Houndmills, Basingstoke RG21 6XS ******************************************************************************** --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "gcs-pcs-list" group. To post to this group, send email to gcs-pcs-list@googlegroups.com To unsubscribe from this group, send email to gcs-pcs-list+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/gcs-pcs-list?hl=en -~----------~----~----~----~------~----~------~--~---