<xs:extension base="xs:string">
<xs:attribute name="vr-id" type="xs:int" use="required" /> </xs:extension>
</xs:simpleContent> </xs:complexType>
<xs:complexType name="privacyPolicy"> <xs:all>
<xs:element name="DataPrivacy" type="privacy" minOccurs="0" maxOccurs ="1"/>
<xs:element name="NodePrivacy" type="privacy" minOccurs="0" maxOccurs ="1"/>
</xs:all> </xs:complexType>
<xs:complexType name="privacy"> <xs:all>
<xs:element name="PrimaryUse" type="xs:string" minOccurs="0"
maxOccurs="1"/>
<xs:element name="Retention" type="xs:string" minOccurs="0"/> <xs:element name="SecondaryUse" type="xs:string" minOccurs="0"/> <xs:element name="Sharing" type="xs:string" minOccurs="0"/> </xs:all>
</xs:complexType>
<xs:complexType name="provenanceManagement"> <xs:all>
<xs:element name="IDNPreviousApplicationID" type="xs:string"
minOccurs="0"/>
<xs:element name="IDNPreviousAuthor" type="author" minOccurs="0"/> <xs:element name="IDNPreviousModifiedOn" type="xs:string" minOccurs="
0"/>
<xs:element name="ProvenancePolicy" type="xs:string" minOccurs="0"
maxOccurs="1"/> </xs:all>
</xs:complexType>
<xs:complexType name="timePolicy"> <xs:all>
<xs:element name="AutoDestroyOn" type="xs:string" minOccurs="0"/> <xs:element name="ValidityNotAfter" type="xs:string" minOccurs="0"/> <xs:element name="ValidityNotBefore" type="xs:string" minOccurs="0"/> </xs:all>
</xs:complexType> </xs:schema>
7.2
Caso d’uso: Open Data di Firenze
All’interno del presente paragrafo saranno illustrati vari casi di utilizzo del- l’XML Schema definito, facendo riferimento all’esempio dei musei estratti
142 IDN Template Data Model
{museo}
coordinate descrizione id
nome indirizzo telefono sitoWeb
musei 1…*
Figura 7.1: IDN Template degli Open Data del Comune di Firenze.
dagli Open Data del Comune di Firenze1, nelle varie declinazioni considerate all’interno dei capitoli 5 e 6.
Per iniziare, si consideri l’IDN Template illustrato in figura 5.6 e riportato per comodit`a in figura 7.1; il listato 7.4 riporta un esempio di documento XML che implementa tale modello.
Listato 7.4: IDN Template dei musei degli Open Data di Firenze.
<?xml version="1.0" encoding="UTF-8"?>
<idn:Model xmlns:idn="http://www.interdatanet.org/2012/IDNTemplate"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.interdatanet.org/2012/IDNTemplate IDNTemplate.xsd ">
<Node uri="http://idn.det.unifi.it/Model/musei" root="true"> <Structure>
<AggregationLinks>
<Link minOccurs="1" maxOccurs="unbounded" uri="./museo" /> </AggregationLinks>
</Structure> </Node>
1Gli Open Data del Comune di Firenze, declinati in chiave IDN-IM, sono descritti
7.2 Caso d’uso: Open Data di Firenze 143
<Node uri="./museo"> <Structure>
<AggregationLinks>
<Link uri="./museo/coordinate" /> <Link uri="./museo/descrizione" /> <Link uri="./museo/id" />
</AggregationLinks> </Structure>
<Semantics> <SemanticLinks>
<Link uri="http://idn.det.unifi.it/Ontologies/Musei#Museo" /> </SemanticLinks>
</Semantics> </Node>
<Node uri="./museo/coordinate"> <Content>
<MediaType>application/json</MediaType> </Content>
</Node>
<Node uri="./museo/descrizione"> <Structure>
<AggregationLinks>
<Link uri="./museo/descrizione/nome" /> <Link uri="./museo/descrizione/indirizzo" /> <Link uri="./museo/descrizione/telefono" /> <Link uri="./museo/descrizione/sitoWeb" /> </AggregationLinks>
</Structure> </Node>
<Node uri="./museo/id"> <Content>
<MediaType>text/plain</MediaType> </Content>
</Node>
<Node uri="./museo/descrizione/nome"> <Content>
<MediaType>application/xml</MediaType>
<Syntax>http://idn.det.unifi.it/Model/Musei/schemas/nome.xsd</Syntax> </Content>
</Node>
<Node uri="./museo/descrizione/indirizzo"> <Content>
<MediaType>application/xml</MediaType>
<Syntax>http://idn.det.unifi.it/Model/Musei/schemas/indirizzo.xsd</ Syntax>
</Content> <Semantics>
<Link uri="http://idn.det.unifi.it/Ontologies/Musei#Indirizzo" /> </SemanticLinks>
</Semantics> </Node>
<Node uri="./museo/descrizione/telefono"> <Content>
<MediaType>application/xml</MediaType>
<Syntax>http://idn.det.unifi.it/Model/Musei/schemas/telefono.xsd</ Syntax>
</Content> <Semantics>
<SemanticLinks>
<Link uri="http://idn.det.unifi.it/Ontologies/Musei#Telefono" /> </SemanticLinks>
</Semantics> </Node>
<Node uri="./museo/descrizione/sitoWeb"> <Content>
<MediaType>application/xml</MediaType>
<Syntax>http://idn.det.unifi.it/Model/Musei/schemas/link.xsd</Syntax> </Content>
<Semantics> <SemanticLinks>
<Link uri="http://idn.det.unifi.it/Ontologies/Musei#SitoWeb" /> </SemanticLinks>
</Semantics> </Node> </idn:Model>
All’interno di tale file sono presenti informazioni che non sono riportate dalla figura 7.1, riguardanti il formato, la sintassi e la semantica dei dati.
Per quanto concerne il formato e la sintassi, `e possibile osservare che: • i nodi conformi al nodo modello coordinate gestiscono dati in formato
JSON, per i quali non `e specificata una sintassi;
• i nodi conformi al nodo modello id gestiscono dati in testo semplice, per i quali non `e specificata una sintassi;
• i nodi conformi ai nodi modello nome, indirizzo, telefono e sitoWeb gestiscono dati in formato XML. Inoltre, per ognuno di essi `e definito un opportuno XML Schema (che il presente lavoro non riporta) utile per la validazione di detti dati.
Per quanto riguarda invece la semantica, risulta evidente come all’interno dei vari tag Semantics siano presenti riferimenti all’ontologia identificata
7.2 Caso d’uso: Open Data di Firenze 145
dall’URI http://idn.det.unifi.it/Ontologies/Musei, illustrata in figu- ra 7.2 e rappresentata da un opportuno file OWL, riportato all’interno del listato 7.5
Listato 7.5: Ontologia OWL per i musei di Firenze.
<?xml version="1.0" encoding="UTF-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns="http://www.interdatanet.org/2012/Ontologies/Musei#" xmlns:base="http://www.interdatanet.org/2012/Ontologies/Musei" > <owl:Ontology>
<rdfs:label>Musei di Firenze</rdfs:label>
<rdfs:comment>Ontologia per la definizione dei musei forniti dagli Open Data del Comune di Firenze.
</rdfs:comment> </owl:Ontology>
<owl:Class rdf:ID="LuogoInteresse">
<rdfs:comment>Rappresenta un luogo di interesse turistico</rdfs:comment
>
<rdfs:label>Luogo di interesse</rdfs:label> </owl:Class>
<owl:Class rdf:ID="Museo">
<rdfs:comment>Rappresenta un museo</rdfs:comment> <rdfs:label>Museo</rdfs:label>
<rdfs:subClassOf rdf:resource="#LuogoInteresse" /> </owl:Class>
<owl:Class rdf:ID="Telefono">
<rdfs:comment>Rappresenta un numero di telefono</rdfs:comment> <rdfs:label>Telefono</rdfs:label>
</owl:Class>
<owl:Class rdf:ID="SitoWeb">
<rdfs:comment>Rappresenta un sito web, con relativo URL</rdfs:comment> <rdfs:label>Sito Web</rdfs:label>
</owl:Class>
<owl:Class rdf:ID="Indirizzo">
<rdfs:comment>Rappresenta un indirizzo, completo di via, numero civico e luogo
</rdfs:comment>
<rdfs:label>Indirizzo</rdfs:label> </owl:Class>
<owl:DataProperty rdf:ID="haCoordinate">
<rdfs:domain rdf:resource="#LuogoInteresse" />
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string" /> </owl:DataProperty>
<owl:DataProperty rdf:ID="haNome">
Lu o go In teres se M u se o Te lef o n o In d iri zz o Si to W eb rd fs: sub ClassOf xsd:st rin g haURL haNumero xsd:st rin g xsd:st rin g xsd:anyU RI xsd:st rin g xsd:st rin g xsd:st rin g
7.2 Caso d’uso: Open Data di Firenze 147
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string" /> </owl:DataProperty>
<owl:ObjectProperty rdf:ID="haIndirizzo"> <rdfs:domain rdf:resource="#LuogoInteresse" /> <rdfs:range rdf:resource="#Indirizzo" /> <owl:inverseOf rdf:resource="#sedeDi" /> </owl:ObjectProperty>
<owl:ObjectProperty rdf:ID="sedeDi"> <rdfs:domain rdf:resource="#Indirizzo" /> <rdfs:range rdf:resource="#LuogoInteresse" /> <owl:inverseOf rdf:resource="#haIndirizzo" /> </owl:ObjectProperty>
<owl:DataProperty rdf:ID="haVia">
<rdfs:domain rdf:resource="#Indirizzo" />
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string" /> </owl:DataProperty>
<owl:DataProperty rdf:ID="haCivico"> <rdfs:domain rdf:resource="#Indirizzo" />
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string" /> </owl:DataProperty>
<owl:DataProperty rdf:ID="haCitta">
<rdfs:domain rdf:resource="#Indirizzo" />
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string" /> </owl:DataProperty>
<owl:ObjectProperty rdf:ID="haSitoWeb">
<rdfs:domain rdf:resource="#LuogoInteresse" /> <rdfs:range rdf:resource="#SitoWeb" />
<owl:inverseOf rdf:resource="#sitoDi" /> </owl:ObjectProperty>
<owl:ObjectProperty rdf:ID="sitoDi"> <rdfs:domain rdf:resource="#SitoWeb" /> <rdfs:range rdf:resource="#LuogoInteresse" /> <owl:inverseOf rdf:resource="#haSitoWeb" /> </owl:ObjectProperty>
<owl:DataProperty rdf:ID="haURL">
<rdfs:domain rdf:resource="#SitoWeb" />
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#anyURI" /> </owl:DataProperty>
<owl:ObjectProperty rdf:ID="haTelefono">
<rdfs:domain rdf:resource="#LuogoInteresse" /> <rdfs:range rdf:resource="#Telefono" /> <owl:inverseOf rdf:resource="#telefonoDi" /> </owl:ObjectProperty>
<owl:ObjectProperty rdf:ID="telefonoDi"> <rdfs:domain rdf:resource="#Telefono" /> <rdfs:range rdf:resource="#LuogoInteresse" /> <owl:inverseOf rdf:resource="#haTelefono" /> </owl:ObjectProperty>
<owl:DataProperty rdf:ID="haNumero"> <rdfs:domain rdf:resource="#Telefono" />
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string" /> </owl:DataProperty>
{museo}
{museoRidefinito}
coordinate descrizione id direttore
Figura 7.3: Riuso di un nodo modello con aggiunta ed eliminazione di link modello, e specifica del server autoritativo.
I listati 7.6 e 7.7 riportano due diversi esempi di documenti XML che imple- mentano l’IDN Template illustrato in figura 6.8 e riportato per comodit`a in figura 7.3; il primo di tali file effettua il riuso ricorrendo al tag FilteredLinks, il secondo al tag MaintainedLinks.
Listato 7.6: IDN Template che effettua il riuso dei musei degli Open Data di Firenze, mediante tag FilteredLinks.
<?xml version="1.0" encoding="UTF-8"?>
<idn:Model xmlns:idn="http://www.interdatanet.org/2012/IDNTemplate"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.interdatanet.org/2012/IDNTemplate IDNTemplate.xsd ">
<Node uri="http://www.example.com/musei/museoRidefinito" root="true"> <NodeReuse uri="http://idn.det.unifi.it/Model/musei/museo">
<FilteredLinks>
<Link uri="http://idn.det.unifi.it/Model/musei/museo/id" /> </FilteredLinks>
</NodeReuse> <Structure>
<AggregationLinks>
<Link uri="./direttore" /> </AggregationLinks>
</Structure> </Node>
<Node uri="./direttore"> <Content>
<MediaType>text/plain</MediaType> </Content>
</Node> </idn:Model>
7.2 Caso d’uso: Open Data di Firenze 149
Listato 7.7: IDN Template che effettua il riuso dei musei degli Open Data di Firenze, mediante tag MaintainedLinks.
<?xml version="1.0" encoding="UTF-8"?>
<idn:Model xmlns:idn="http://www.interdatanet.org/2012/IDNTemplate"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.interdatanet.org/2012/IDNTemplate IDNTemplate.xsd ">
<Node uri="http://www.example.com/musei/museoRidefinito" root="true"> <NodeReuse uri="http://idn.det.unifi.it/Model/musei/museo">
<MaintainedLinks>
<Link uri="http://idn.det.unifi.it/Model/musei/museo/coordinate" /> <Link uri="http://idn.det.unifi.it/Model/musei/museo/descrizione" /> </MaintainedLinks>
</NodeReuse> <Structure> <AggregationLinks>
<Link uri="./direttore" /> </AggregationLinks>
</Structure> </Node>
<Node uri="./direttore"> <Content>
<MediaType>text/plain</MediaType> </Content>
</Node> </idn:Model>
Il listato 7.8 riporta invece un esempio di documento XML che implemen- ta l’IDN Template illustrato in figura 6.11 e riportato per comodit`a in figura 7.4.
Listato 7.8: IDN Template con riuso multiplo.
<?xml version="1.0" encoding="UTF-8"?>
<idn:Model xmlns:idn="http://www.interdatanet.org/2012/IDNTemplate"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.interdatanet.org/2012/IDNTemplate IDNTemplate.xsd ">
<Node uri="http://www.example.com/musei/museoRidefinito" root="true"> <NodeReuse uri="http://idn.det.unifi.it/Model/musei/museo">
<MaintainedLinks>
<Link uri="http://idn.det.unifi.it/Model/musei/museo/coordinate" /> </MaintainedLinks>
</NodeReuse> <Structure>
<AggregationLinks>
<Link uri="./direttore" />
<Link uri="./descrizioneRidefinita" /> </AggregationLinks>
</Structure> </Node>
150 IDN Template Data Model
coordinate
id
nome indirizzo telefono sitoWeb
{museo} {museoRidefinito} direttore socialNetwork descrizione descrizioneRidefinita
Figura 7.4: Riuso di due nodi modello dell’IDN Template relativo agli Open Data del Comune di Firenze.
<Node uri="./direttore"> <Content>
<MediaType>text/plain</MediaType> </Content>
</Node>
<Node uri="./descrizioneRidefinita">
<NodeReuse uri="http://idn.det.unifi.it/Model/musei/museo/descrizione"
/> <Structure>
<AggregationLinks>
<Link uri="./descrizioneRidefinita/socialNetwork" /> </AggregationLinks>
</Structure> </Node>
<Node uri="./descrizioneRidefinita/socialNetwork"> <Content>
<MediaType>text/plain</MediaType> </Content>
</Node> </idn:Model>
7.2 Caso d’uso: Open Data di Firenze 151
descrizioneRidefinita coordinate
id
nome indirizzo telefono sitoWeb {museo} {museoRidefinito} direttore socialNetwork internet email descrizione
Figura 7.5: Riuso di vari nodi modello dell’IDN Template relativo agli Open Data del Comune di Firenze.
Infine, il listato 7.9 riporta un esempio di documento XML che implemen- ta l’IDN Template illustrato in figura 6.12 e riportato per comodit`a in figura 7.5.
Listato 7.9: IDN Template con riuso multiplo.
<?xml version="1.0" encoding="UTF-8"?>
<idn:Model xmlns:idn="http://www.interdatanet.org/2012/IDNTemplate"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.interdatanet.org/2012/IDNTemplate IDNTemplate.xsd ">
<Node uri="http://www.example.com/musei/museoRidefinito" root="true"> <NodeReuse uri="http://idn.det.unifi.it/Model/musei/museo">
<MaintainedLinks>
<Link uri="http://idn.det.unifi.it/Model/musei/museo/coordinate" /> </MaintainedLinks>
</NodeReuse> <Structure>
<AggregationLinks>
<Link uri="./direttore" />
<Link uri="./descrizioneRidefinita" /> </AggregationLinks>
</Structure> </Node>
<Content>
<MediaType>text/plain</MediaType> </Content>
</Node>
<Node uri="./descrizioneRidefinita">
<NodeReuse uri="http://idn.det.unifi.it/Model/musei/museo/descrizione"> <FilteredLinks> <Link uri="http://idn.det.unifi.it/Model/musei/museo/descrizione/sitoWeb " /> </FilteredLinks> </NodeReuse> <Structure> <AggregationLinks>
<Link uri="./descrizioneRidefinita/internet" /> </AggregationLinks>
</Structure> </Node>
<Node uri="./descrizioneRidefinita/internet"> <Structure>
<AggregationLinks>
<Link uri="http://idn.det.unifi.it/Model/musei/museo/descrizione/ sitoWeb" />
<Link uri="./descrizioneRidefinita/internet/socialNetwork" /> <Link uri="./descrizioneRidefinita/internet/email" />
</AggregationLinks> </Structure>
</Node>
<Node uri="./descrizioneRidefinita/internet/socialNetwork"> <Content>
<MediaType>text/plain</MediaType> </Content>
</Node>
<Node uri="./descrizioneRidefinita/internet/email"> <Content>
<MediaType>text/plain</MediaType> </Content>
</Node> </idn:Model>