- From: Henry S. Thompson <ht@cogsci.ed.ac.uk>
- Date: 11 Jan 2002 16:15:24 +0000
- To: www-rdf-interest@w3.org
A thread on xmlschema-dev@w3.org, started by Dave Beckett, led me to the following. It's a general approach which could serve as the starting point for a template for anyone wishing to define a document type which provides for RDF descriptions from a fixed vocabulary. Please feel from to develop this further, and to forward it to other appropriate list(s). Note the example is not completely valid, intentionally -- banana is not allowed -- it's there to illustrate that lax validation does get to the embedded Description. ht restricted-rdf.xsd: <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSchema 200102//EN" "http://www.w3.org/2001/XMLSchema.dtd"> <xs:schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" targetNamespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <xs:element name="RDF"> <xs:complexType> <xs:sequence> <xs:element ref="rdf:Description" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Description"> <xs:complexType> <xs:sequence> <xs:element ref="rdf:any" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute ref="rdf:about" use="optional"/> </xs:complexType> </xs:element> <xs:attribute name="about" type="anyURI"/> <xs:element name="any" abstract="true"> <xs:annotation> <xs:documentation>Import this into a schema, and put something into the substitution group of rdf:any to get a simple restricted version of rdf:RDF</xs:documentation> </xs:annotation> </xs:element> </xs:schema> simple-rdf-example.xml: <?xml version='1.0'?> <top xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/dc/elements/1.1/" xsi:schemaLocation="http://purl.org/dc/elements/1.1/ simple-rdf-xmpl.xsd"> <rdf:RDF> <rdf:Description rdf:about="http://www.ltg.ed.ac.uk/~ht/xsv-status.html"> <creator>Henry S. Thompson</creator> <subject>The XSV Schema Validator</subject> </rdf:Description> <rdf:Description rdf:about="http://www.w3.org/"> <creator>Tim Berners Lee</creator> <subject> <rdf:Description> <subject>this should break</subject> <banana>because this isn't allowed</banana> </rdf:Description> </subject> </rdf:Description> </rdf:RDF> </top> simple-rdf-example.xsd: <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSchema 200102//EN" "http://www.w3.org/2001/XMLSchema.dtd"> <xs:schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" targetNamespace="http://purl.org/dc/elements/1.1/"> <xs:import namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#" schemaLocation="restricted-rdf.xsd"/> <xs:element name="top"> <xs:annotation> <xs:documentation> Having this in the dc namespace is a bit off. At the expense of a further schema doc, it could be in a separate NS. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element ref="rdf:RDF"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="any" abstract="true" substitutionGroup="rdf:any"/> <xs:element name="title" substitutionGroup="dc:any"/> <xs:element name="creator" substitutionGroup="dc:any"/> <xs:element name="subject" substitutionGroup="dc:any"/> <xs:element name="description" substitutionGroup="dc:any"/> <xs:element name="publisher" substitutionGroup="dc:any"/> <xs:element name="contributor" substitutionGroup="dc:any"/> <xs:element name="date" substitutionGroup="dc:any"/> <xs:element name="type" substitutionGroup="dc:any"/> <xs:element name="format" substitutionGroup="dc:any"/> <xs:element name="identifier" substitutionGroup="dc:any"/> <xs:element name="source" substitutionGroup="dc:any"/> <xs:element name="language" substitutionGroup="dc:any"/> <xs:element name="relation" substitutionGroup="dc:any"/> <xs:element name="coverage" substitutionGroup="dc:any"/> <xs:element name="rights" substitutionGroup="dc:any"/> </xs:schema> ht -- Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh W3C Fellow 1999--2001, part-time member of W3C Team 2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440 Fax: (44) 131 650-4587, e-mail: ht@cogsci.ed.ac.uk URL: http://www.ltg.ed.ac.uk/~ht/
Received on Friday, 11 January 2002 11:15:28 UTC