Resource Description Framework (RDF)

Da Wiki AI.
Versione del 17 ago 2024 alle 16:26 di Mindmakerbot (discussione | contributi)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Su internet enormi quantità di documenti di testo sono collegate tra loro attraverso l'utilizzo di hyperlinks: essendo puro testo, questo pone delle difficoltà per, uomo o macchina, estrarre delle informazioni salienti, dei fatti.

RDF è un formato che genera quello che viene chiamato un database a grafo , che è una modalità diversa per la persistenza dei dati, differenziandosi dai classici database relazionali o i formati JSON o XML. Questo tipo di databse è quello che è alla base del web semantico.

Un esempio di grafo è quello che può essere descritto dalle seguenti tre affermazioni:

  • Bengie è un cane
  • Bonnie è un gatto
  • Bengie e Bonnie sono amici



Le frecce nel diagramma precendent si chiamano proprietà, spesso vengono chiamate predicati.

RDF Data Model

Un Data Model, in Resource Description Framework (RDF), ovvero la codifica W3C per la codifica e lo scambio di metadati strutturati, è la rappresentazione di un'entità, o di un dominio.

Il modello di dati di RDF è formato da tre entità:

  • Risorse: qualsiasi cosa descritta viene chiamata risorsa, e identificata da un URI (Uniform Resource Identifier)
  • Proprietà: sono delle relazioni che legano tra loro risorse e risorse, o risorse e valori. Anch'esse sono identificate da un URI
  • Valori: sono dei dati primitivi, come un valore intero o una stringa che contiene l'URI di una risorsa

Lo statement, o affermazione, è una tripla di tipo Soggetto – Predicato – Oggetto, dove:

  • il soggetto è una risorsa
  • il predicato è una proprietà
  • l'oggetto è un valore, o anche un URI che punta ad un'altra risorsa

Questo modello di dati è astratto e non specifica nessun meccanismo o formato per dichiarare le entità, questo è il compito dell'RDF Schema.

Esempio di Data Model

Immaginiamo di voler rappresentare informazioni riguardanti un libro all'interno di una biblioteca digitale. In questo caso, il libro sarà la nostra "risorsa" principale.

  • Risorsa (Soggetto): Un libro specifico identificato dall'URI http://biblioteca.esempio/libri/ISBN1234567890
  • Proprietà (Predicato): Alcune proprietà comuni che potremmo voler descrivere per un libro includono:
    • http://purl.org/dc/elements/1.1/title per il titolo del libro
    • http://purl.org/dc/elements/1.1/creator per l'autore del libro
    • http://purl.org/dc/elements/1.1/publishedDate per la data di pubblicazione
    • http://purl.org/dc/elements/1.1/language per la lingua del testo
  • Valori (Oggetto): Per ciascuna delle proprietà sopra elencate, assegneremo un valore corrispondente. Ad esempio:
    • Per il titolo: "Le avventure di Pinocchio" (una stringa)
    • Per l'autore: "Carlo Collodi" (una stringa)
    • Per la data di pubblicazione: "1883" (un valore intero o una stringa, a seconda della rappresentazione scelta)
    • Per la lingua: "Italiano" (una stringa)

Quindi, per rappresentare queste informazioni in RDF, creeremmo le seguenti triple:

  1. (http://biblioteca.esempio/libri/ISBN1234567890, http://purl.org/dc/elements/1.1/title, "Le avventure di Pinocchio")
  2. (http://biblioteca.esempio/libri/ISBN1234567890, http://purl.org/dc/elements/1.1/creator, "Carlo Collodi")
  3. (http://biblioteca.esempio/libri/ISBN1234567890, http://purl.org/dc/elements/1.1/publishedDate, "1883")
  4. (http://biblioteca.esempio/libri/ISBN1234567890, http://purl.org/dc/elements/1.1/language, "Italiano")

Esempio in formato RDF (XML)

Il modello RDF è rappresentabile da un grafo orientato i cui nodi sono risorse o valori, e i cui archi sono le proprietà.

Qui sotto si trova un esempio di RDF, nel formato XML:

<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:feature="https://www.linkeddatatools.com/clothing-features#">

	<rdf:Description rdf:about="https://www.linkeddatatools.com/clothes#t-shirt">

		<feature:size>12</feature:size>
		<feature:color rdf:resource="https://www.linkeddatatools.com/colors#white"/>

	</rdf:Description>

</rdf:RDF>

La parte del tag <rdf:Description></rdf:Description> e di ciò che vi è incluso è la tripla RDF, visualizzata nell'immagine in basso:

Ontologie, RDF Schema e OWL

Le ontologie permettono di definire relazioni tra entità all'interno di un vocabolario predefinito. Questo ha numerosi vantaggi tra i quali quello di permettere un interscambio dei dati nel momento in cui due fonti si rifanno a una stessa ontologia di base.

Le ontologie RDF possono essere scritte utilizzando due sintassi: RDFS e OWL.

Un esempio di OWL è il seguente:

<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
	xmlns:owl="http://www.w3.org/2002/07/owl#"
	xmlns:dc="http://purl.org/dc/elements/1.1/">

	<owl:Ontology rdf:about="https://www.linkeddatatools.com/plants">
		<dc:title>The LinkedDataTools.com Example Plant Ontology</dc:title>
		<dc:description>An example ontology written for the LinkedDataTools.com RDFS & OWL introduction tutorial</dc:description>
	</owl:Ontology>

	<owl:Class rdf:about="https://www.linkeddatatools.com/plants#planttype">
		<rdfs:label>The plant type</rdfs:label>
		<rdfs:comment>The class of plant types.</rdfs:comment>
	</owl:Class>

</rdf:RDF>


E' interessante notare che sulla linea 5 si stabilisce che il namespace dc è importato dai Dublin Core Metadata Initiative, il namespace owl da http://www.w3.org/2002/07/owl: questo aggiunge termini al vocabolario base.

RDF vs RDFS

La differenza principale con RDF è che OWL sta effettivamente specificando i metadati, cioè l'ontologia, e non le reali istanze delle classi. Da notare che stiamo definendo l'ontologia in RDF, cioè l'ontologia stessa è un documento RDF.

RDF è il concetto di descrivere le cose utilizzando delle triple. RDF è anche un vocabolario, specificato a questo URL, che permette di descrivere entità, mentre RDFS è un vocabolario per creare/definire classi.

Esempio completo

In questo esempio vengono definite tre classi con OWL:

  • planttype
  • flowers come sottoclasse di planttype
  • shrubs come sottoclasse di planttype
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
	xmlns:owl="http://www.w3.org/2002/07/owl#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:plants="https://www.linkeddatatools.com/plants#">


	<owl:Class rdf:about="https://www.linkeddatatools.com/plants#planttype">

		<rdfs:label>The plant type</rdfs:label>
		<rdfs:comment>The class of all plant types.</rdfs:comment>

	</owl:Class>

	<owl:Class rdf:about="https://www.linkeddatatools.com/plants#flowers">

		<rdfs:subClassOf rdf:resource="https://www.linkeddatatools.com/plants#planttype"/>

		<rdfs:label>Flowering plants</rdfs:label>
		<rdfs:comment>Flowering plants, also known as angiosperms.</rdfs:comment>

	</owl:Class>

	<owl:Class rdf:about="https://www.linkeddatatools.com/plants#shrubs">

		<rdfs:subClassOf rdf:resource="https://www.linkeddatatools.com/plants#planttype"/>

		<rdfs:label>Shrubbery</rdfs:label>
		<rdfs:comment>Shrubs, a type of plant which branches from the base.</rdfs:comment>


</rdf:RDF>


Infine, viene istanziata con RDF una'istanza, "magnolia", di tipo flowers e con la proprietà "family", un'orchidea, e una proprietà "similarlyPopularTo". Per la spiegazione dell'esempio completo si veda questo link.

<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:owl="http://www.w3.org/2002/07/owl#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:plants="https://www.linkeddatatools.com/plants#">



	<owl:DatatypeProperty rdf:about="https://www.linkeddatatools.com/plants#family"/>

	<owl:ObjectProperty rdf:about="https://www.linkeddatatools.com/plants#similarlyPopularTo"/>

	<rdf:Description rdf:about="https://www.linkeddatatools.com/plants#orchid">

		<rdf:type rdf:resource="https://www.linkeddatatools.com/plants#flowers"/>

		<plants:family>Orchidaceae</plants:family>

		<plants:similarlyPopularTo rdf:resource="https://www.linkeddatatools.com/plants#magnolia"/>

	</rdf:Description>

	<rdf:Description rdf:about="https://www.linkeddatatools.com/plants#magnolia">

		<rdf:type rdf:resource="https://www.linkeddatatools.com/plants#flowers"/>

		<plants:family>Magnoliaceae</plants:family>

		<plants:similarlyPopularTo rdf:resource="https://www.linkeddatatools.com/plants#orchid"/>

	</rdf:Description>

</rdf:RDF>

Link

https://www.linkeddatatools.com/introducing-rdf/