Article de reference

Réification (informatique)

En informatique , la réification est le processus par lequel une idée abstraite sur un programme est transformée en un modèle de données explicite ou en un autre objet créé dans...

En informatique , la réification est le processus par lequel une idée abstraite sur un programme est transformée en un modèle de données explicite ou en un autre objet créé dans un langage de programmation . Un objet calculable/adressable (une ressource ) est créé dans un système en tant que proxy pour un objet non calculable/adressable. Au moyen de la réification, quelque chose qui était auparavant implicite, inexprimé et éventuellement inexprimable est explicitement formulé et rendu disponible pour une manipulation conceptuelle (logique ou informatique). De manière informelle, la réification est souvent appelée « faire de quelque chose un citoyen de première classe » dans le cadre d'un système particulier. Certains aspects d'un système peuvent être réifiés au moment de la conception du langage , ce qui est lié à la réflexion dans les langages de programmation. Elle peut être appliquée comme un raffinement par étapes au moment de la conception du système . La réification est l'une des techniques les plus fréquemment utilisées d' analyse conceptuelle et de représentation des connaissances .

Langages de programmation réflexifs

Dans le contexte des langages de programmation , la réification est le processus par lequel un programme utilisateur ou tout aspect d'un langage de programmation qui était implicite dans le programme traduit et le système d'exécution, sont exprimés dans le langage lui-même. Ce processus le rend disponible au programme, qui peut inspecter tous ces aspects comme des données ordinaires . Dans les langages réflexifs , les données de réification sont liées de manière causale à l'aspect réifié associé de telle sorte qu'une modification de l'un d'eux affecte l'autre. Par conséquent, les données de réification sont toujours une représentation fidèle de l'aspect réifié associé . On dit souvent que les données de réification sont transformées en objet de première classe . La réification, au moins partiellement, a été expérimentée dans de nombreux langages à ce jour : dans les premiers dialectes Lisp et dans les dialectes Prolog actuels , les programmes ont été traités comme des données, bien que le lien de causalité ait souvent été laissé à la responsabilité du programmeur. Dans Smalltalk -80, le compilateur du texte source au bytecode fait partie du système d'exécution depuis les toutes premières implémentations du langage.

  • Le langage de programmation C réifie les détails de bas niveau des adresses mémoire .De nombreuses conceptions de langage de programmation encapsulent les détails de l'allocation de mémoire dans le compilateur et le système d'exécution. Dans la conception du langage de programmation C, l'adresse mémoire est réifiée et est disponible pour une manipulation directe par d'autres constructions de langage. Par exemple, le code suivant peut être utilisé lors de l'implémentation d'un pilote de périphérique mappé en mémoire. Le pointeur de tampon est un proxy pour l'adresse mémoire 0xB8000000.
    char * tampon = ( char * ) 0xB8000000 ; tampon [ 0 ] = 10 ;
    
  • Les langages de programmation fonctionnels basés sur le lambda-calcul réifient le concept d'abstraction de procédure et d'application de procédure sous la forme de l' expression Lambda .
  • Le langage de programmation Scheme réifie les continuations (approximativement, la pile d'appels).
  • En C# , la réification est utilisée pour rendre le polymorphisme paramétrique implémenté sous la forme de génériques comme une fonctionnalité de premier ordre du langage.
  • Dans le langage de programmation Java , il existe des « types réifiables » qui sont « complètement disponibles au moment de l'exécution » (c'est-à-dire que leurs informations ne sont pas effacées lors de la compilation).
  • REBOL réifie le code en données et vice versa.
  • De nombreux langages, tels que Lisp , JavaScript et Curl , fournissent une procédure evalorevaluate qui réifie efficacement l'interpréteur de langage.
  • Le framework Logtalk pour Prolog offre un moyen d'explorer la réification dans le contexte de la programmation logique .
  • Les langages Smalltalk et Actor permettent la réification des blocs et des messages , qui sont équivalents aux expressions lambda en Lisp, et thisContexten Smalltalk, qui est une réification du bloc en cours d'exécution.
  • Les langues homoiconiques réifient la syntaxe de la langue elle-même sous la forme d'un arbre syntaxique abstrait , généralement avec eval.

Réification des données vs. raffinement des données

La réification des données ( affinement par étapes ) implique de trouver une représentation plus concrète des types de données abstraits utilisés dans une spécification formelle .

La réification des données est la terminologie de la méthode de développement de Vienne (VDM) que la plupart des autres personnes appelleraient raffinement des données. Un exemple consiste à faire un pas vers une implémentation en remplaçant une représentation de données sans contrepartie dans le langage d'implémentation prévu, comme les ensembles, par une représentation qui a une contrepartie (comme des cartes avec des domaines fixes qui peuvent être implémentées par des tableaux), ou au moins une qui est plus proche d'avoir une contrepartie, comme des séquences. La communauté VDM préfère le mot « réification » à « raffinement », car le processus a plus à voir avec la concrétisation d'une idée qu'avec son raffinement.

Pour des usages similaires, voir Réification (linguistique) .

Dans la modélisation conceptuelle

La réification est largement utilisée dans la modélisation conceptuelle . La réification d'une relation signifie la considérer comme une entité. Le but de la réification d'une relation est de la rendre explicite, lorsque des informations supplémentaires doivent y être ajoutées. Considérez le type de relation IsMemberOf(member:Person, Committee). Une instance de IsMemberOfest une relation qui représente le fait qu'une personne est membre d'un comité. La figure ci-dessous montre un exemple de population de IsMemberOfrelation sous forme de tableau. La personne P1 est membre des comités C1 et C2 . La personne P2 est membre du comité C1 uniquement.

Exemple de population de IsMemberOfrelation sous forme de tableau. La personne P1 est membre des comités C1 et C2. La personne P2 est membre du comité C1 uniquement.

Le même fait pourrait cependant être considéré comme une entité. En considérant une relation comme une entité, on peut dire que l'entité réifie la relation. C'est ce qu'on appelle la réification d'une relation. Comme toute autre entité, elle doit être une instance d'un type d'entité. Dans l'exemple présent, le type d'entité a été nommé Membership. Pour chaque instance de IsMemberOf, il existe une et une seule instance de Membership, et vice versa. Il devient alors possible d'ajouter des informations supplémentaires à la relation d'origine. Par exemple, nous pouvons exprimer le fait que « la personne p1 a été nommée membre du comité c1 par la personne p2 ». La relation réifiée Membershippeut être utilisée comme source d'une nouvelle relation IsNominatedBy(Membership, Person).

Pour les usages apparentés, voir Réification (représentation des connaissances) .

En langage de modélisation unifié (UML)

Le diagramme de classe UML pour l'exemple d'adhésion.

UML fournit une construction de classe d'association pour définir des types de relations réifiées. La classe d'association est un élément de modèle unique qui est à la fois une sorte d'association et une sorte de classe.

L'association et le type d'entité qui effectue la réification sont tous deux le même élément de modèle. Notez que les attributs ne peuvent pas être réifiés.

Sur le Web sémantique

RDF et OWL

Dans les langages du Web sémantique , tels que Resource Description Framework (RDF) et Web Ontology Language (OWL), une déclaration est une relation binaire. Elle est utilisée pour lier deux individus ou un individu et une valeur. Les applications doivent parfois décrire d'autres déclarations RDF, par exemple pour enregistrer des informations telles que la date à laquelle les déclarations ont été faites ou la personne qui les a faites, ce que l'on appelle parfois des informations de « provenance ». À titre d'exemple, nous pouvons vouloir représenter les propriétés d'une relation, telles que notre certitude à son sujet, la gravité ou la force d'une relation, la pertinence d'une relation, etc.

L'exemple de la section de modélisation conceptuelle décrit une personne particulière avec URIref person:p1, qui est membre de committee:c1. Le triplet RDF de cette description est

personne : p1 
comité : estMembreDu 
comité : c1 
.

Pensez à stocker deux faits supplémentaires : (i) pour enregistrer qui a nommé cette personne en particulier à ce comité (une déclaration sur l'adhésion elle-même), et (ii) pour enregistrer qui a ajouté le fait à la base de données (une déclaration sur la déclaration).

Le premier cas est un cas de réification classique comme ci-dessus dans UML : réifier l'appartenance et stocker ses attributs et rôles, etc. :

comité : Adhésion 
rdf : type 
owl : Classe 
. 
comité : adhésion12345 
rdf : type 
comité : Adhésion 
. 
comité : adhésion12345 comité : dePersonne personne : p1 . comité : adhésion12345 
comité : enComité comité : c1 . personne : p2 comité : nommé comité : adhésion12345 .

De plus, RDF fournit un vocabulaire intégré destiné à décrire les instructions RDF. Une description d'une instruction utilisant ce vocabulaire est appelée une réification de l'instruction. Le vocabulaire de réification RDF se compose du type rdf:Statement, et des propriétés rdf:subject, rdf:predicate, et rdf:object.

En utilisant le vocabulaire de réification, une réification de l'énoncé sur l'appartenance de la personne serait donnée en attribuant à l'énoncé une référence URI telle que committee:membership12345les énoncés descriptifs puissent être écrits comme suit :

comité : adhésion12345Stat 
rdf : type 
rdf : Déclaration 
. 
comité : adhésion12345Stat 
rdf : sujet 
personne : p1 
. 
comité : adhésion12345Stat 
rdf : prédicat 
comité : isMemberOf 
. 
comité : adhésion12345Stat 
rdf : objet 
comité : c1 
.

Ces énoncés indiquent que la ressource identifiée par URIref committee:membership12345Statest une instruction RDF, que le sujet de l'énoncé fait référence à la ressource identifiée par person:p1, le prédicat de l'énoncé fait référence à la ressource identifiée par committee:isMemberOf, et l'objet de l'énoncé fait référence à la ressource committee:c1. En supposant que l'énoncé d'origine soit effectivement identifié par committee:membership12345, il devrait être clair en comparant l'énoncé d'origine avec la réification que la réification le décrit effectivement. L'utilisation conventionnelle du vocabulaire de réification RDF implique toujours la description d'un énoncé à l'aide de quatre énoncés dans ce modèle. Par conséquent, ils sont parfois appelés le « quad de réification ».

En utilisant la réification selon cette convention, nous pourrions enregistrer le fait que person:p3l'instruction a été ajoutée à la base de données par

personne : p3 
comité : addedToDatabase 
comité : membership12345Stat 
.

Il est important de noter que dans l'utilisation conventionnelle de la réification, le sujet des triplets de réification est supposé identifier une instance particulière d'un triplet dans un document RDF particulier, plutôt qu'un triplet arbitraire ayant le même sujet, le même prédicat et le même objet. Cette convention particulière est utilisée car la réification est destinée à exprimer des propriétés telles que les dates de composition et les informations sur la source, comme dans les exemples déjà donnés, et ces propriétés doivent être appliquées à des instances spécifiques de triplets. Notez que le triplet décrit (subject predicate object)lui-même n'est pas impliqué par un tel quad de réification (et il n'est pas nécessaire qu'il existe réellement dans la base de données). Cela permet également d'utiliser ce mécanisme pour exprimer quels triplets ne sont pas valables.

La puissance du vocabulaire de réification dans RDF est limitée par l'absence d'un moyen intégré pour attribuer des URIrefs aux instructions, donc pour exprimer des informations de « provenance » de ce type dans RDF, il faut utiliser un mécanisme (en dehors de RDF) pour attribuer des URI à des instructions RDF individuelles, puis faire d'autres instructions sur ces instructions individuelles, en utilisant leurs URI pour les identifier.

Dans les cartes thématiques

Dans une carte de sujets XML (XTM), seul un sujet peut avoir un nom ou jouer un rôle dans une association. On peut utiliser une association pour faire une assertion sur un sujet, mais on ne peut pas faire directement d'assertions sur cette assertion. Cependant, il est possible de créer un sujet qui réifie une construction non-sujet dans une carte, permettant ainsi à l'association d'être nommée et traitée comme un sujet lui-même.

nRelations -aires

Dans les langages du Web sémantique, tels que RDF et OWL, une propriété est une relation binaire utilisée pour lier deux individus ou un individu et une valeur. Cependant, dans certains cas, la manière naturelle et pratique de représenter certains concepts consiste à utiliser des relations pour lier un individu à plusieurs individus ou valeurs. Ces relations sont appelées relations n-aires . Les exemples sont la représentation de relations entre plusieurs individus, comme un comité, une personne qui est membre du comité et une autre personne qui a désigné la première personne à devenir membre du comité, ou un acheteur, un vendeur et un objet qui a été acheté lors de la description de l'achat d'un livre.

Une approche plus générale de la réification consiste à créer une nouvelle classe explicite et n nouvelles propriétés pour représenter une relation n -aire, faisant d'une instance de la relation reliant les n individus une instance de cette classe. Cette approche peut également être utilisée pour représenter des informations de provenance et d'autres propriétés pour une instance de relation individuelle.

: p1 
a 
: Personne 
; 
: a_adhésion 
_ : adhésion_12345 
. 
_ : adhésion_12345 
a 
: Adhésion 
; 
: comité 
: c1 ; 
: nommé_par 
: p2 
.

Vs. citation

Il est également important de noter que la réification décrite ici n'est pas la même que la « citation » que l'on trouve dans d'autres langages. Au lieu de cela, la réification décrit la relation entre une instance particulière d'un triplet et les ressources auxquelles le triplet fait référence. La réification peut être lue intuitivement comme disant « ce triplet RDF parle de ces choses », plutôt que (comme dans la citation) « ce triplet RDF a cette forme ». Par exemple, dans l'exemple de réification utilisé dans cette section, le triplet :

comité : membres12345 
rdf : sujet 
personne : p1 
.

La description rdf:subjectde la déclaration originale indique que le sujet de la déclaration est la ressource (la personne) identifiée par l'URIref person:p1. Elle n'indique pas que le sujet de la déclaration est l'URIref elle-même (c'est-à-dire une chaîne commençant par certains caractères), comme le ferait une citation.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index