
guide
Tutti i linguaggi per diventare uno sviluppatore di app per Android.
Introduzione pratica all’RDF: cos’è, a cosa serve e come verrà utilizzato l’XML.
*In collaborazione con Manthys
Uno dei problemi più comuni che i navigatori del Web si trovano a dover affrontare quasi quotidianamente è la ricerca di informazioni in maniera accurata. Con il crescere del numero di pagine pubblicate sul Web, i classici motori di ricerca cominciano a diventare sempre meno idonei nella ricerca di informazioni. Vi sarà sicuramente capitato più volte di cercare informazioni su un determinato argomento, ad esempio sulla coltivazione dei “girasoli”, e di ottenere come risultato una serie di link a pagine che hanno a che fare con la vendita diretta di semi di girasole, a pagine pubblicitarie su una determinata marca di olio di girasole, alla home page del signor “Girasoli” o a quella dell’hotel “Soli e Girasoli” e così via.
Il fatto è che i motori di ricerca classificano le informazioni contenute in una pagina Web basandosi sulle parole in essa contenute. Quindi la presenza del termine “girasoli” all’interno di una pagina web fa sì che questa sia candidata ad essere proposta a chi effettui una ricerca in base a questo termine. Per consentire una ricerca più accurata occorrerebbe classificare le pagine Web ricorrendo a descrizioni del contenuto delle pagine stesse, tramite quelli che tecnicamente vengono chiamati metadati. I metadati sono dati che descrivono altri dati. Ad esempio, i campi titolo, autore, genere, ecc. sono metadati che descrivono libri (o film, articoli, ecc.) e che vengono comunemente utilizzati nella definizione di tabelle in un database. Estendere questo stesso concetto al web non è così immediato, in quanto la natura non centralizzata di Internet non permette di definire in maniera univoca dei campi da utilizzare per la descrizione delle risorse.
Tanto più che il tipo di informazioni da classificare è talmente vasto e imprevedibile che qualsiasi insieme di campi si tenti di definire sarebbe insufficiente.
Allo scopo di fornire un meccanismo flessibile per la descrizione delle risorse sul Web, il W3C ha definito un modello astratto denominato Resource Description Framework (RDF). Questo modello di descrizione si basa su tre tipi di oggetti:
Una risorsa può essere rappresentata da una pagina, un gruppo di pagine, un’immagine, un server o una qualsiasi altro elemento che abbia un Universal Resource Identifier (URI), cioè un meccanismo di identificazione come l’indirizzo Web
Una proprietà è una specifica caratteristica o attributo di una risorsa; una proprietà può anche descrivere relazioni con altre risorse.
Una asserzione è costituita dall’insieme di una risorsa, una proprietà e uno specifico valore per quella proprietà e descrive le caratteristiche di una risorsa e le relazioni con altre risorse
Ad esempio, la frase
la pagina all’indirizzo www.html.it/rdf.html ha per argomento RDF
è un’asserzione costituita dalla risorsa pagina all’indirizzo www.html.it/rdf.html, dalla proprietà argomento e dal valore RDF.
RDF è un modello di descrizione astratto e non pone vincoli sulla sintassi e sul significato delle descrizioni di una risorsa. Questo vuol dire che ognuno potrebbe proporre un qualsiasi meccanismo per descrivere risorse utilizzando le astrazioni previste da RDF. Ad esempio, una descrizione RDF potrebbe essere espressa tramite una rappresentazione grafica delle risorse, degli attributi e delle asserzioni.
Tuttavia, per ragioni pratiche, la definizione formulata del W3C propone XML come metalinguaggio per la rappresentazione del modello RDF, cioè propone RDF come linguaggio basato su XML. Seguendo la sintassi proposta, la frase vista precedentemente può essere rappresentata nel seguente modo:
<rdf:RDF>
<rdf:Description about=”https://www.html.it/rdf.html”>
<argomento>RDF</argomento>
</rdf:Description>
</rdf:RDF>
In pratica, una descrizione RDF è un documento XML contenente alcuni tag predefiniti (nell’esempio, <rdf:RDF> e <rdf:Description>) e una lista di tag liberi per la descrizione vera e propria.
Nella descrizione RDF si fa uso della tecnica dei namespace di XML. Un namespace è un contesto che definisce un insieme di tag da utilizzare in un documento XML. Nel precedente esempio, il tag <rdf:RDF> indica che tale tag è definito nel namespace identificato dal prefisso rdf, la cui dichiarazione si trova nella prima riga del documento XML. In tale riga è presente la direttiva di elaborazione che indica anche l’indirizzo presso cui è pubblicata la definizione del namespace.
Come abbiamo visto nell’esempio precedente, i tag propriamente descrittivi di una descrizione RDF sono liberi, nel senso che ciascuno è libero di inventarsi i tag che preferisce. Tuttavia questo comporterebbe la possibilità di ritrovarsi tag diversi con lo stesso significato. Ad esempio, il nostro tag <argomento> potrebbe essere definito come <subject> da un nostro collega anglosassone. Per evitare il sovrapporsi di tag diversi con lo stesso significato, RDF prevede un meccanismo per creare vocabolari o schemi, cioè insiemi di proprietà ed elementi che definiscono un contesto per la descrizione di determinate categorie di risorse.
Un noto esempio di schema RDF è il Dublin Core Metadata: esso definisce i tag da utilizzare per la descrizione di documenti elettronici (libri, articoli, rapporti, ecc.). Il seguente è un esempio di descrizione del sito HTML.IT in RDF utilizzando lo schema Dublin Core Metadata:
<rdf:RDF>
<rdf:Description about=”http://www.html.it”>
<dc:Title>HTML.IT</dc:Title>
<dc:Description>
Il portale italiano su HTML e dintorni
</dc:Description>
<dc:Publisher>HTML.IT srl</dc:Publisher>
<dc:Format>text/html</dc:Format>
<dc:Language>it</dc:Language>
</rdf:Description>
</rdf:RDF>
Come è evidente dall’esempio, anche per far riferimento ad uno specifico schema RDF si fa uso dei namespace. Nel nostro caso, oltre al namespace individuato dal prefisso rdf, viene utilizzato il namespace individuato dal prefisso dc e definito dallo schema RDF del Dublin Core Metadata.
Gli schemi RDF possono essere riutilizzati ed estesi per la descrizione di altre categorie di risorse. Possono includere vincoli sui possibili valori di una proprietà ed ereditare caratteristiche da altri schemi.
Ma come possiamo associare una descrizione RDF ad una pagina HTML? Abbiamo essenzialmente due modi: creare una descrizione esterna e mettere all’interno della pagina un riferimento alla descrizione tramite il tag <LINK>, come nel seguente esempio:
<link rel=”meta” href=”descrizione.rdf”>
Oppure inserire la descrizione all’interno della pagina HTML, come nel seguente esempio:
<html>
<head>
<rdf:RDF xmlns:rdf=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”>
<rdf:Description about=”http://www.myserver.com/index.html”>
…
Descrizione RDF
…
</rdf:Description>
</rdf:RDF>
</head>
<body>
…
Contenuto della pagina HTML
…
</body>
</html>
È opportuno inserire la descrizione RDF nella sezione <head> della pagina HTML per evitare che qualche browser visualizzi il suo contenuto all’utente.
L’uso di RDF è agli inizi e non sono ancora apprezzabili gli effetti che questa tecnologia porterà sul Web. Non sono ancora molti i motori di ricerca che utilizzano RDF per classificare le pagine Web, ma sembra che l’interesse nei confronti di questa tecnologia sia molto alto. Quello che possiamo fare al momento è cercare di immaginare quello che potrà essere il Web con un uso accurato di RDF. Un primo risultato sarà senz’altro la maggior precisione nella ricerca di informazioni tramite i motori di ricerca. Si apre anche la strada alla realizzazione di agenti software in grado di navigare su Internet alla ricerca di informazioni specifiche, come ad esempio il confronto di prezzi di determinati articoli.
In altre parole, assisteremo al passaggio dal Web così come lo conosciamo oggi al cosiddetto Semantic Web, un Web le cui informazioni saranno comprensibili ed elaborabili non soltanto da parte degli esseri umani ma anche da parte di opportuni software.
Se vuoi aggiornamenti su RDF per descrivere il Web inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
Una chiacchierata con Paolo Di Paola che ha lavorato alla customizzazione di Android e ci racconta cosa significa e cosa […]
Tutti i linguaggi per diventare uno sviluppatore di app per Android.
Come creare applicazioni per il Web con PHP e MySQL per il DBMS.
Tutte le principali tecnologie per diventare uno sviluppatore mobile per iOS.
I fondamentali per lo sviluppo di applicazioni multi piattaforma con Java.
Diventare degli esperti in tema di sicurezza delle applicazioni Java.
Usare Raspberry Pi e Arduino per avvicinarsi al mondo dei Maker e dell’IoT.
Le principali guide di HTML.it per diventare un esperto dei database NoSQL.
Ecco come i professionisti creano applicazioni per il Cloud con PHP.
Lo sviluppo professionale di applicazioni in PHP alla portata di tutti.
Come sviluppare applicazioni Web dinamiche con PHP e JavaScript.
Fare gli e-commerce developer con Magento, Prestashop e WooCommerce.
Realizzare applicazioni per il Web utilizzando i framework PHP.
Creare applicazioni PHP e gestire l’ambiente di sviluppo come un pro.
Percorso base per avvicinarsi al web design con un occhio al mobile.
Realizzare siti Web e Web application con WordPress a livello professionale.
Come creare database e collection, inserire, estrarre, aggiornare e rimuovere dati da una base di dati MongoDB con Python
Impariamo ad utilizzare Takamaka, una blockchain Java Full Stack, per scrivere codice Java installabile ed eseguibile su una blockchain
Realizziamo un primo progetto maven per una web-application con appfuse
Guida a Red Hat Quarkus, uno stack Java Kubernetes nativo pensato per applicazioni serverless e per la realizzazione di microservizi rapidi ed ottimizzati. Una piattaforma concepita per accedere in ambiente Cloud mettendo a disposizione un framework orientato ai microservizi, come ad esempio Spring Boot o Micronaut