A Definició de perÃodes de temps amb Dublin Core especulava sobre com millorar la sintaxi XML de Dublin Core per reflexar un perÃode de temps.
Tot i que la conclusió que arribava era que una formula bona seria:
<dc:title>
Esdeveniment
</dc:title>
<dc:date>
<rdfs:label>start</rdfs:label>
<dcterms:W3CDTF>
<rdf:value>2007-04-01T09:00+01:00</rdf:value>
</dcterms:W3CDTF>
</dc:date>
<dc:date>
<rdfs:label>end</rdfs:label>
<dcterms:W3CDTF>
<rdf:value>2007-04-01T09:00+01:00</rdf:value>
</dcterms:W3CDTF>
</dc:date>
portar-ho a la prà ctica és poc factible ja que els XML Schema definits pel Dublin Core no contemplen aquesta possibilitat.
Això planteja un dubte: és millor amotllar-se a una solució genèrica o millor definir una solució pròpia?
En aquest cas, amotllar-se a la solució genèrica implica passar a emprar una estructura del tipus:
<dcterms:temporal xsi:type="dcterms:Period">
name=Esdeveniment;
start=2007-04-01T09:00+01:00;
end=2007-04-01T10:00+01:00;
</dcterms:temporal>
Aquesta solució, proposada per les Guidelines for implementing DC in XML, és particularment incòmode de validar ja que l'XML Schema només restringeix el contingut a tipus xs:string, completament ineficaç si ens volem cenyir al format de data ISO 8601
Si es vol validar el format de data, Dublin Core defineix el tipus W3CDTF que permetria fer:
<dc:date xsi:type="dcterms:W3CDTF">
2002-07-09
</date>
Aquesta aproximació té el problema que no permet definir perÃodes ni permet matisar si la data és d'inici o de final.
Aixà doncs si es vol tenir tot, el més útil és definir una solució pròpia que es refini l'element dc:date de Dublin Core amb el mateix sistema que ho fa dcterms:temporal:
<xs:element name="startPeriod" substitutionGroup="dc:date"/>
<xs:element name="endPeriod" substitutionGroup="dc:date"/>
I a l'XML es pot emprar fent quelcom tipus:
<startPeriod xsi:type="dcterms:W3CDTF">2007-03-29T20:04:37+01:00</startPeriod>
<endPeriod xsi:type="dcterms:W3CDTF">2007-04-01T20:04:37+01:00</endPeriod>
Aquà apareixen dos problemes. El primer és que el tipus W3CDTF està definit com a simpleContent derivat d'un complexContent i sembla que no tots els parsers XML Schema saben validar-ho.
A les anotacions de Dublin Core pels elements Qualificats diu:
This derivation of a complexType with simpleContent by restriction of a base complexType with complexContent is valid under section 3.4.6 of XML Schema Part 1: Structures, specifically item 5.1.2 of the section "Schema Component Constraint: Derivation Valid (Restriction, Complex)", because the base complexContent is mixed and emptiable.
El segon problema és que el tipus W3CDTF no permet usar el format ISO 8601 en tot el seu abast ja que no permet la forma:
1994-11-05T13:15:30Z
homòloga a:
1994-11-05T08:15:30-05:00
Per aconseguir-ho es podria extendre el tipus W3CDTF però és molt més simple definir un tipus nou tal que:
<xs:simpleType name="iso8601">
<xs:restriction base="xs:dateTime">
<xs:pattern value=".+T.+(Z|[+\-].+)"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="startPeriod" type="iso8601"/>
<xs:element name="endPeriod" type="iso8601"/>
de manera que l'XML quedaria simplificat en:
<startPeriod>2007-03-29T20:04:37+01:00</startPeriod>
<endPeriod>2007-04-01T20:04:37+01:00</endPeriod>
Recursos relacionats
- Dublin Core Metadata Element Set, Version 1.1 (Date term)
- DCMI Period Encoding Scheme
- Notes on the W3C Schema for Qualified DC
- Expressing Dublin Core metadata using XML
- Guidelines for implementing DC in XML (Working Draft)
- XML schemas to support the Guidelines for implementing DC in XML recommendation
- Date and Time Formats (ISO 8601)
Comentaris