Skip to main content

[draft] About properties, metaproperties and 2nd order metaproperties

Purpose:  This doc is mostly meant for a technical view of things. 

Problem

The inkVisitor terminology can be confusing without initiation. One of the headaches can come from the question properties, metaproperties and 2nd order metapropertis. 

Basics

DDM in DDB1 work with entities of various entity types; these entities can have properties.

Entity types

Statement is an Entity type with the purpose of relating other Entities. All statements (as well as all other entities) have unique IDs, and their original order in the text is preserved, thereby allowing to follow the development of action in the narrative, the interplay of questions and answers, etc.

The other Entity types covered in the data model are:

  • Action type
  • Concept
  • Person
  • Group
  • Being (typically, animal)
  • (Physical) Object
  • Location
  • Event
  • Value
  • Text / Text part
  • Resource

See https://github.com/DISSINET/InkVisitor.

Documentation on GitHub defines properties as

The uses of properties include:

  • Modelling adjectives concerning actants.
  • Instantiating Entities to parent types.
  • Defining time and place of action (including in fuzzy terms).
  • Recording other adverbials, for example, those concerning the manner of action, circumstances, causes or consequences of an action.

But this, from the "programmer's view", is slightly misleading.  From a strictly technical sense, properties are direct attributes of the entity (e.g. object Statement has property "label" (type string), which defines name or description).  How to deal with it?   A person needs to understand how the entity is defined in the code and that "property" does not have a general sense from OOP programming.

An entity in the DDM (=DISSINET Data Model) is foremost an object which has essential direct attribute variables like "label" or "id", but it also has array variables which can hold other objects.  Among other entity has array attribute props, which bear

Let's unpack it.  The data model is technically defined in the inkVisitor typescript *.ts  files, which directly correspond to JSON structure, which is in the DDB1 database.

Each entity (e.g.  Action) has its own ts file (e.g. action.ts); see in the GitHub repository:

image.png

In the sense of object-oriented design,  each specific entity (e.g. location, person) inherits the definition of the IEntity interface, which is in the entity.ts file.  The IEntity is defined like this (screenshot from 16th January 2023):

image.png

 

Metaproperties