Risorsa anonima

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Esempio di risorsa anonima in un grafo RDF

Una risorsa anonima[1][2] (chiamata anche in inglese blank node, abbreviato in bnode) è un nodo di un grafo RDF rappresentante una risorsa per la quale non è assegnato un percorso IRI.[3] Secondo lo standard RDF, una risorsa anonima può essere utilizzata solo come soggetto o oggetto di una tripla RDF, e non come predicato.

I linguaggi facenti utilizzo di risorse anonime seguono necessariamente una logica di tipo OWA. Tramite blank node, infatti, non si garantisce la completezza della base di conoscenza.

Il concetto di risorsa anonima è ripreso anche in OWL per rappresentare classi anonime, come unioni o intersezioni fra classi,[4] o restrizioni di classi tramite determinati vincoli sulle proprietà.[5]

Sintassi[modifica | modifica wikitesto]

Le risorse anonime possono essere denotate tramite identificatori blank node in RDF/XML, Turtle, N3 e N-Triples.

Segue un esempio in RDF/XML:

<rdf:Description rdf:about="http://www.csd.uoc.gr/~hy561" dc:title="Web Data Management">
  <ex:professor rdf:nodeID="_:b"/>
</rdf:Description>
<rdf:Description rdf:nodeID="_:b" ex:fullName="Adam Smith">
  <ex:homePage rdf:resource="http://www.csd.uoc.gr/~smith/"/>
</rdf:Description>

Gli identificatori dei blank node sono utilizzabili nella serializzazione di un singolo grafo RDF, ovvero il nodo _:b in un grafo non è lo stesso nodo identificato da _:b in un altro grafo. Da questo punto di vista è affine ad una variabile locale, visibile solo all'interno di uno specifico modulo.

Le risorse anonime possono essere identificate anche tramite elementi nidificati (in RDF/XML, Turtle and N3). Ecco un esempio:

<rdf:Description rdf:about="http://www.csd.uoc.gr/~hy561" dc:title="Web Data Management">
  <ex:professor>
    <rdf:Description ex:fullName="Adam Smith">
      <ex:homePage rdf:resource="http://www.csd.uoc.gr/~smith/"/>
    </rdf:Description>
  </ex:professor>
</rdf:Description>

Segue lo stesso esempio in Turtle:

<http://www.csd.uoc.gr/~hy561> dc:title "Web Data Management" ;
                               ex:professor [ ex:fullName "Adam Smith" ;
                                              ex:homePage <http://www.csd.uoc.gr/~smith/> ] .

Query[modifica | modifica wikitesto]

Il concetto di risorsa anonima è usato anche nell'interrogazione delle ontologie. In SPARQL, ad esempio, presa una base di dati come:

@prefix foaf:  <http://xmlns.com/foaf/0.1/> .
_:a  foaf:name   "Alice" .
_:b  foaf:name   "Bob" .

e una query come:

PREFIX foaf:   <http://xmlns.com/foaf/0.1/>
SELECT ?x ?nome
WHERE  { ?x foaf:name ?nome }

il risultato di quest'ultima potrebbe essere fra i seguenti:

x nome
_:a "Alice"
_:b "Bob"
x nome
_:c "Alice"
_:d "Bob"
x nome
_:v "Alice"
_:w "Bob"

Tali risultati sono tutti equivalenti fra loro, in quanto il nome del blank node non è importante in sé, ma serve solo per sapere quando due asserzioni si riferiscono necessariamente alla stessa risorsa.[6]

I blank node possono essere indicati anche all'interno della query. In SPARQL esistono due sintassi per farlo: con _:abc si assegna un nome al blank node (in modo da poterlo utilizzare di nuovo per riferirsi alla stessa risorsa), mentre scrivendo [] non viene specificato alcun nome, quindi non ci si potrà più riferire esplicitamente a quella risorsa.[7] Spesso i blank node possono essere sottintesi tramite le sintassi abbreviate: ad esempio, per chiedere tutti gli studenti che hanno superato un certo esame con 30 e lode, si potrebbe interrogare il sistema con la seguente query:

SELECT ?s
WHERE { ?s :esame _:e .
_:e :voto "31" . }

che è equivalente alla semplice:

SELECT ?s
WHERE { ?s :esame [ :voto "31" ] . }

Esiste inoltre una funzione (chiamata isBlank) per controllare se un certo nodo sia o meno una risorsa anonima. Ad esempio, scrivendo FILTER isBlank(?x) si forza il sistema a restituire solo risultati per i quali la variabile ?x è una risorsa anonima all'interno della base di dati.[8]

Note[modifica | modifica wikitesto]

  1. ^ Di Noia, De Virgilio, Di Sciascio, M. Donini, p. 37.
  2. ^ RDF e RDFS - SisInf Lab - Politecnico di Bari, diap. 15.
  3. ^ (EN) Blank nodes, su RDF 1.1 Semantics, w3.org, 25 febbraio 2014. URL consultato il 15 aprile 2016 (archiviato il 28 marzo 2016).
  4. ^ (EN) OWL Web Ontology Language: Parsing OWL in RDF/XML, su w3.org, 21 gennaio 2004. URL consultato il 16 aprile 2016 (archiviato il 29 marzo 2016).
  5. ^ (EN) OWL Web Ontology Language: Reference, su w3.org, 10 febbraio 2004. URL consultato il 16 aprile 2016 (archiviato il 23 marzo 2016).
  6. ^ (EN) Blank Node Labels in Query Results, su SPARQL 1.1 Query Languge, w3.org, 21 marzo 2013. URL consultato il 2 dicembre 2019 (archiviato dall'url originale il 18 novembre 2019).
  7. ^ (EN) Syntax for Blank Nodes, su SPARQL 1.1 Query Languge, w3.org, 21 marzo 2013. URL consultato il 2 dicembre 2019 (archiviato dall'url originale il 18 novembre 2019).
  8. ^ (EN) isBlank, su SPARQL 1.1 Query Languge, w3.org, 21 marzo 2013. URL consultato il 2 dicembre 2019 (archiviato dall'url originale il 18 novembre 2019).

Bibliografia[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica