Reificazione (informatica)

In informatica, la reificazione è il processo tramite cui un concetto astratto viene trasformato in un modello dei dati o altri oggetti creati tramite un linguaggio di programmazione. Un oggetto computabile/indirizzabile, detto "risorsa", viene creato nel sistema per incapsulare un oggetto non computabile o indirizzabile.

Informalmente, reificare un concetto o comportamento astratti significa renderli un first-class object, come un tipo, un oggetto, un'entità o un valore, ovvero una qualche struttura che supporti le operazioni più comuni, quali l'essere passata come argomento, restituita da una funzione o assegnata ad una variabile.[1]

La reificazione è una tecnica molto comune nel paradigma orientato agli oggetti, in analisi concettuale e nella rappresentazione della conoscenza.

Reificazione e linguaggi riflessivi

Nel contesto dei linguaggi di programmazione, la reificazione è il processo tramite cui taluni aspetti del programma o del linguaggio programmazione, che altrimenti sarebbero impliciti nel codice compilato e a tempo di esecuzione, vengono espressi dal linguaggio stesso. Tramite la reificazione, il programma può analizzare tutti questi aspetti come dati ordinari. Nei linguaggi riflessivi, il referente (ovvero la struttura creata tramite reificazione) è causalmente connesso all'aspetto reificato, in modo che una modifica del primo riguardi anche il secondo.

La reificazione, almeno parzialmente, può essere espressa nell'utilizzo di vari linguaggi:

  • In C vengono reificati i dettagli di basso livello degli indirizzi di memoria. A differenza di molti altri linguaggi, infatti, la gestione della memoria viene eseguita direttamente nel codice sorgente, per cui sono necessarie tecniche per la gestione dei metadati delle variabili del programma. In particolare, l'indirizzo di memoria viene reificato e reso disponibile per la manipolazione diretta da altri costrutti del linguaggio. Nella seguente linea di codice, ad esempio, viene creato il puntatore buffer per permettere di accedere all'indirizzo di memoria 0xB800000:
    char* buffer = (char*) 0xB800000;
    
  • Il linguaggio Scheme reifica le continuazioni (approximately, the call stack).
  • In C#, la reificazione è utilizzata per eseguire il polimorfismo parametrico.
  • In Java esistono dei "reifiable types" ("tipi reificabili") che sono "completamente disponibili a tempo di esecuzione" (ovvero, i loro metadati non vengono cancellati durante la compilazione del sorgente)[2]
  • Molti linguaggi, come Lisp, JavaScript e Curl, forniscono una procedura chiamata eval o evaluate che reifica a tutti gli effetti l'interprete del linguaggio. Ad esempio, scrivendo uno script JavaScript del tipo:
    for(var i=1; i<=3; i++) eval("document.myform.object"+i+".value=0");
    
    equivale a scrivere
     document.myform.object1.value=0
     document.myform.object2.value=0
     document.myform.object3.value=0
    
    In questo modo, come si può notare è molto semplice manipolare gli oggetti senza utilizzare direttamente i nomi delle variabili, bensì ricavandoli dinamicamente.

Reificazione dei dati e refinement

Nel metodo formale VDM, la reificazione è detta refinement ("raffinamento"). Il data refinement consiste nel sostituire il tipo di dati astratto usato nella progettazione di un algoritmo o di un sistema con una rispettiva struttura dati concreta.[3]

Reificazione nella modellazione concettuale

La reificazione è largamente impiegata nella modellazione concettuale.[4] Reificare una relazione significa rappresentarla come un'entità.

Per esempio, considerando la relazione AppartieneA(membro:Persona, Comitato), un'istanza di AppartieneA rappresenta il fatto che una persona sia membro di un comitato. La figura in basso raffigura un esempio di istanze della relazione in forma tabulare. La reificazione della relazione AppartieneA consiste nel trasformarla in un'entità Appartenenza, la quale, tramite due relazioni ad hoc AppartenenzaP e AppartenenzaC viene collegata, rispettivamente, alle entità Persona e Comitato.

Esempio di un insieme di istanze della relazione AppartieneAe. La persona P1 è membro dei comitati C1 e C2. La persona P2 è membro soltanto del comitato C1.

Nel contesto della modellazione dei dati, reificare una relazione è indispensabile quando si vuole trattare la relazione stessa come un'entità. Nell'esempio sopra, l'uso dell'entità Appartenenza potrebbe servire a definire la relazione che indica quale persona stabilisce l'appartenenza di un'altra persona ad un comitato, ovvero Stabilisce(Persona, Appartenenza).

Nel contesto dell'implementazione di una base di dati, la reificazione è necessaria quando la relazione non ha vincoli di cardinalità. Nell'esempio sopra, una persona può essere membro di più comitati, e un comitato può avere più membri. Questa situazione non è esprimibile né integrando la relazione nella tabella Persona (tramite un eventuale attributo Persona.appartiene_a) né integrandola nella tabella Comitato (tramite un eventuale attributo Comitato.partecipanti), in quanto un attributo può contenere un solo valore. La soluzione più semplice è inserire tutte le istanze della relazione AppartieneA in una tabella Appartenenza avente due attributi, membro e comitato, imponendo i necessari vincoli di foreign key verso le tabelle Persona e Comitato, rispettivamente.

Analogamente, anche gli attributi di un'entità possono essere reificati, qualora siano troppo complessi.

Il class diagram UML per l'esempio dei comitati

UML fornisce il costrutto association class per definire le relazioni reificate. Tale costrutto è sia di tipo "classe" che "associazione".[5]

Reificazione nel Web semantico

RDF e OWL

Nei linguaggi per il Web semantico, come Resource Description Framework (RDF) e Web Ontology Language (OWL), ogni affermazione (statement) è costituita da una relazione binaria, formata da soggetto, predicato e oggetto. Uno statement viene utilizzato per collegare due risorse o una risorsa e un valore. Talvolta, tuttavia, può essere necessario esprimere predicati riguardanti la stessa relazione. Ad esempio, potremmo voler rappresentare alcune proprietà della relazione stessa, come il suo grado di affidabilità, la sua rilevanza, la forza con cui soggetto e oggetto sono connessi, ecc.

Seguendo l'esempio sui comitati riportato nella sezione sulla modellazione concettuale, una particolare persona può essere indicata con URIref person:p1, e un particolare comitato ex:c1. La tripla RDF descrivente il fatto che p1 è membro di c1 è la seguente:

  person:p1   ex:AppartieneA   ex:c1 .

Si considerino ora i due seguenti casi:

  1. si vuole esprimere il fatto che una persona abbia nominato un'altra persona membro di un particolare comitato;
  2. si vuole esprimere il fatto che una persona abbia registrato tale nomina nella base di dati.

Nel primo caso si può attuare la classica reificazione (come sopra):

 ex:Appartenenza       rdf:type          owl:Class .
 ex:appartenenza0004   rdf:type          ex:Appartenenza .
 ex:appartenenza0004   ex:dellaPersona   persona:p1 .
 ex:appartenenza0004   ex:nelComitato    ex:c1 .
 person:p2             ex:nomina         ex:appartenenza0004 .

Nel secondo caso, si necessita di esprimere affermazioni riguardanti lo statement stesso. Per far ciò, RDF fornisce un vocabolario dedicato alla descrizione degli statement, costituito dal tipo rdf:Statement e dalle proprietà rdf:subject, rdf:predicate, e rdf:object..[6]

 ex:appartenenza0004Stat   rdf:type        rdf:Statement .
 ex:appartenenza0004Stat   rdf:subject     person:p1 .
 ex:appartenenza0004Stat   rdf:predicate   committee:AppartieneA . 
 ex:appartenenza0004Stat   rdf:object      ex:c1 .

Queste quattro triple indicano che la risorsa indicata con URIref ex:appartenenza0004Stat è uno statement RDF, che il soggetto di tale statement si riferisce alla risorsa identificata con person:p1, il predicato alla risorsa identificata con committee:AppartieneA e l'oggetto alla risorsa identificata con ex:c1. Utilizzando la reificazione secondo tale convenzione, possiamo successivamente esprimere il fatto che person:p3 ha aggiunto la suddetta affermazione nella base di dati:

  person:p3    ex:aggiungeNelDB    ex:appartenenza0004Stat .

Reificazione e Topic Maps

Note

  1. ^ (EN) Michael Scott, Programming Language Pragmatics, San Francisco, CA, Morgan Kaufmann Publishers, 2006, p. 140.
  2. ^ (EN) The Java Language Specification, section 4.7, Java SE 7 Edition
  3. ^ (EN) O.-J. Dahl, Edsger Dijkstra, C. A. R. Hoare, Structured Programming, Londra, Academic Press, 1972, ISBN 0-12-200550-3.
  4. ^ (EN) Antoni Olivé, Conceptual Modeling of Information Systems, Springer Verlag, 2007.
  5. ^ (EN) Unified Modeling Language, UML superstructure, Object Management Group, 2 novembre 2007.
  6. ^ (EN) RDF Primer, su w3.org. URL consultato il 9 ottobre 2010.

Voci correlate

Collegamenti esterni

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

Read other articles:

Essais Sampul depan, sekitar 1588.PengarangMichel de MontaigneJudul asliEssaisNegaraKerajaan PrancisBahasaPrancis TengahGenreEsaiPenerbitSimon Millanges, Jean RicherTanggal terbitMaret 1580TeksEssais di Wikisource Essais (bahasa Prancis diucapkan [esɛ]) atau Essays dalam bahasa Inggris, adalah esai karya Michel de Montaigne yang terdiri dari tiga buku berisi 107 bab dengan panjang yang bervariasi. Ketiga buku ini awalnya ditulis dalam bahasa Prancis Tengah dan aslinya diterbit...

 

 

Town in VirginiaLovettsville, VirginiaTownTown of LovettsvilleLovettsville in September 2008 SealLovettsvilleShow map of Northern VirginiaLovettsvilleShow map of VirginiaLovettsvilleShow map of the United StatesCoordinates: 39°16.4′N 77°38.4′W / 39.2733°N 77.6400°W / 39.2733; -77.6400Country United StatesState VirginiaCountyLoudounGovernment • MayorChristopher M. Hornbaker[1] • Vice MayorJoy Pritz[1]Area[2&#...

 

 

Estonian football club Football clubNõmme KaljuFull nameNõmme Kalju FCNickname(s)Roosad Pantrid (Pink Panthers)Founded1923; 101 years ago (1923)Re-established in 1997; 27 years ago (1997)GroundHiiu StadiumCapacity650[1]PresidentKuno TehvaManagerNikita AndreevLeagueMeistriliiga2023Meistriliiga, 5th of 10WebsiteClub website Home colours Away colours Nõmme Kalju FC (Estonian pronunciation: [ˈnɤmːe ˈkɑlju]), commonly known as Nõmme Kalj...

Jean ZonarasBiographieNaissance Entre 1070 et 1075Empire byzantinDécès Après 1140Activités Écrivain, théologien, moine, historien, canonisteŒuvres principales Épitomé historion (d)modifier - modifier le code - modifier Wikidata Jean Zonaras (né vers 1074, mort après 1159) est un haut fonctionnaire, théologien et historien byzantin du XIIe siècle. Après une brillante carrière dans la fonction publique et à la suite semble-t-il d’une tragédie familiale, il se retira au m...

 

 

Donna Shalala Donna Edna Shalala (Arab: دونا إدنا شلالاcode: ar is deprecated ; /ʃəˈleɪlə/ shə-LAY-lə; lahir 14 Februari 1941) adalah seorang politikus dan akademisi Amerika Serikat yang menjabat sebagai anggota DPR Amerika Serikat sejak 2019. Sebagai anggota Partai Demokrat, ia sebelumnya menjabat sebagai Menteri Kesehatan dan Pelayanan Kemanusiaan Amerika Serikat ke-18 di bawah kepemimpinan Presiden Bill Clinton dari 1993 sampai 2001. Catatan Referensi Pranala luar Wikim...

 

 

Questa voce sull'argomento calciatori maliani è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. Salif Keïta Nazionalità  Mali Altezza 176 cm Calcio Ruolo Ala Carriera Squadre di club1 1963-1964 Pionniers de Ouolofobougou? (?)1964-1965 Real Bamako? (?)1965-1965 Stade Malien? (?)1966-1967 Real Bamako? (?)1967-1972 Saint-Étienne149 (120)1972-1973 Olympique Marsiglia18 (10)19...

Tang dynasty period painting Night-Shining White照夜白圖ArtistHan GanYearc. 750TypePaintingMediumHandscroll; ink on paperDimensions30.8 cm × 34 cm (12.1 in × 13 in)LocationMetropolitan Museum of Art, New York City Night-Shining White (Chinese: 照夜白圖) is a monochrome ink-on-paper painting by the Chinese artist Han Gan. It is an example of Tang dynasty painting, created in the middle of the 8th century (circa 750). The work depict...

 

 

Sculpture in Mexico City, Mexico El CaballitoThe sculpture in 2011El CaballitoLocation within Centro HistóricoArtistSebastiánYear1992 (1992)MediumSteel sculptureLocationMexico City, MexicoCoordinates19°26′10″N 99°08′58″W / 19.43608559°N 99.14942711°W / 19.43608559; -99.14942711 El Caballito, officially Cabeza de caballo (horse's head),[1][2] is an outdoor 28-metre (92 ft) tall steel sculpture by Sebastián (Enrique Carbajal) depi...

 

 

Hitomi NabatameNabatame pada Oktober 2013Nama asal生天目 仁美Lahir04 Agustus 1976 (umur 47)Sado, Niigata, JapanPekerjaan Aktris seiyuu penyanyi Tahun aktif1998–sekarangAgenKen ProductionKarya terkenal DokiDoki! PreCure sebagai Mana Aida/Cure Heart Sword Art Online: Alicization/Sword Art Online: Alicization - War of Underworld sebagai Fanatio/Fanatio Synthesis Two Date A Live sebagai Nia Honjou White Album 2 sebagai Kazusa Touma Rin-ne sebagai Rokumon Strawberry Panic! s...

Municipality in Baranya, CroatiaDražMunicipalityŠokac houses in Draž FlagCoat of armsLocation of Draž in Osijek-Baranja CountyDražLocation of Draž in CroatiaShow map of Osijek-Baranja CountyDražDraž (Croatia)Show map of CroatiaDražDraž (Europe)Show map of EuropeCoordinates: 45°50′32″N 18°47′19″E / 45.84222°N 18.78861°E / 45.84222; 18.78861Country CroatiaRegionBaranya (Podunavlje)County Osijek-BaranjaGovernment[1] • Načeln...

 

 

هذه المقالة عن المجموعة العرقية الأتراك وليس عن من يحملون جنسية الجمهورية التركية أتراكTürkler (بالتركية) التعداد الكليالتعداد 70~83 مليون نسمةمناطق الوجود المميزةالبلد  القائمة ... تركياألمانياسورياالعراقبلغارياالولايات المتحدةفرنساالمملكة المتحدةهولنداالنمساأسترالي�...

 

 

Mensur beralih ke halaman ini. Untuk orang bernama Mensur, lihat Mansur. Anggar AkademisDuel anggar mensur di Heidelberg tahun 1900FokusPersenjataanNegara asalJermanPenciptaBeragamOrang tuaSekolah Anggar JermanOlahraga olimpikTidak Anggar Akademis (Jerman: akademisches Fechtencode: de is deprecated disebut Mensur atau Schmisse) adalah versi akademik dari lomba pedang anggar yang sering dilakukan di negara Jerman, Austria, dan Swiss. Para lelaki akan berduel dengan rasa sportivitas dan biasany...

Joe Kelly al Wondercon di Anaheim del 2012 Joseph Paul Kelly, meglio noto come Joe Kelly (1º settembre 1971), è un fumettista, scrittore e produttore televisivo statunitense. Celebre soprattutto per il suo lavoro su Deadpool per la Marvel Comics, del quale scrisse le storie dal 1997 al 1999, trasformandolo da stereotipo del personaggio action e violento anni '90 (come voleva la precedente caratterizzazione del personaggio ad opera dei suoi creatori, Rob Liefeld e Fabian Nicieza)[1] ...

 

 

Political philosophy focused on retaining traditional social institutions Conservatives redirects here. For specific political parties, see Conservative Party. This article is about conservatism as a political and social philosophy. For other uses of conservatism and conservative, see Conservatism (disambiguation). Not to be confused with Conservation movement. The examples and perspective in this article deal primarily with Europe and the Americas and do not represent a worldwide view of the...

 

 

1862 song by George Frederick Root For the 1988 book, see Battle Cry of Freedom: The Civil War Era. Rally 'Round the Flag redirects here. For other uses, see Rally 'Round the Flag (disambiguation). Battle Cry of FreedomCover of the 1862 sheet music for Battle Cry of FreedomSongPublished1862Songwriter(s)George Frederick Root The Battle Cry of Freedom, also known as Rally 'Round the Flag, is a song written in 1862 by American composer George Frederick Root (1820–1895) during the American Civi...

The Beaumont EnterpriseThe July 27, 2005 front page ofThe Beaumont EnterpriseTypeDaily newspaperFormatBroadsheetOwner(s)Hearst CommunicationsFounder(s)John W. LeonardPublisherJeff BerginEditorKaitlin BainFounded1880Headquarters380 Main StreetBeaumont, TX 77701United StatesCirculation5,925 (as of 2023)[1]Websitebeaumontenterprise.com The Beaumont Enterprise is a newspaper of Hearst Communications, headquartered in Beaumont, Texas.[2] It has been in operation since 1880. His...

 

 

Chinese Muslim rebel leader (1823–1872) In this Chinese name, the family name is Du. Du Wenxiu's headquarters in Dali, Yunnan; now the Dali City Museum Du WenxiuChinese杜文秀TranscriptionsStandard MandarinHanyu PinyinDù WénxiùWade–GilesTu Wen-hsiu Part of a series onIslam in China History By dynasty Tang Song Yuan Ming Qing Rebellions and revolts Jahriyya revolt Panthay Rebellion (1856–1873) First Dungan Revolt (1862–1877) Second Dungan Revolt (1895–1896) Afaqi Khoja revolts P...

 

 

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: San Antonio Zoo – news · newspapers · books · scholar · JSTOR (June 2016) (Learn how and when to remove this message) Zoo in Texas, United States San Antonio Zoo29°27′53″N 98°28′19″W / 29.4648°N 98.4719°W / 29.4648; -98.4719D...

511e régiment du train Insigne régimentaire du 511e RT Création 1er août 1944 Pays France Allégeance Armée française Branche Armée de Terre Type Régiment Rôle Train Effectif 950 Fait partie de Brigade logistique Garnison Auxonne Surnom Régiment de Bourgogne Couleurs Vert et blanc Devise Passe toujours Marche Marche du 511e RT Inscriptionssur l’emblème Indochine 1947-1954 Anniversaire Saint Christophe (25 juillet) Fête du train (26 mars) Équipement VT4 GBC 180 PPLOG TRM 10000 ...

 

 

19th-20th century French periodical Not to be confused with the contemporary Paris newspaper Le Monde Le Monde illustré (title translation: The Illustrated World) was a leading illustrated news magazine in France which was published from 1857–1940 and again from 1945 to 1956. It was in many ways similar to its contemporary English-language newsmagazine The Illustrated London News and should not be confused with the French newspaper Le Monde. Election de la Reine des Blanchisseuses au l...