Jump to content

Research:WikiPrime specification (RD)

From LithoGraphica
Revision as of 22:07, 15 September 2026 by Reversedragon (talk | contribs) (Agenda)

Name

"WikiPrime" is in reference to "Wikibase". The pun is that while Wikibase is the "base" metal, WikiPrime would be something refined out of it, like alchemists' quest to produce the prima materia ("first matter" or "prime matter").

Concept entities

These are similar to Wikibase Items but not exactly the same. Each concept entity has an integer number which is used as its canonical URL within wiki pages, and one or more natural-language names. They are basically similar to tokens or vectors within large language models but each one is meant to represent a specific thought in the sense of the definition that sits below a sense of a word in a dictionary or the brief sentence explanation a scientist might give to what a highly specific jargon term means. The natural-language alias of each concept entity does not have to be unique, but it should at least be unique only when combined with a particular field or context such as "daemon (Linux)" or "daimon (ancient Greece)".

Concept entities should contain:
entity number (QID) - integer identifier. this is allowed to change, although entities should only be moved between numbers once or twice early on in their development.
unique identifier (EID) - truly unique identifier which is not allowed to change and is only used internally to link entities together within the database.
label - default natural-language alias to display when displaying concept entity.
philosophy or category (trad) - color code to display concept entity in within Hue lists.
local field (trad-field) - color code to apply to other entities displayed on the same page. for instance, a page about "Sans (Undertale)" would apply the field code UTDR when listing all motifs relevant to the character.
arbitrary Characteristics/Properties - a concept entity can have any number of user-defined Characteristics just like it can on Wikibase.

WikiPrime should treat integer identifiers containing commas or periods as capable of linking to the same number with the commas or periods removed regardless of where they were placed, so that "pronounced Q1-comma-000-comma-000" or "pronounced Q1-period-000-period-000" is the same as "pronounced Q1-million".

Label entities

These entities store natural language labels that can be used to caption each concept entity at will.

Label entities should contain:
sense code (sense) - outward-facing entity number, to be added to QID to form a canonical URL for a given label. like QIDs, these can change, but should only be changed a small number of times.
unique identifier (EID) - permanent immutable identifier for each label entity to be used internally.

Lexemes / Terms

These should not be used within WikiPrime. For the purposes WikiPrime is designed for, concept entities should usually be sufficient for studying the meanings of terms. However, this allows for greater flexibility on what is allowed to be analyzed as a field-specific term.

Prototype entities

While developing LithoGraphica, RD created a great number of prototype pages to record surface impressions about various concepts. These were not necessarily intended to serve as "high-quality information" to go on encyclopedia entries, and were instead intended to serve as guidelines for separating the definition of one concept from the definition of another concept. Each concept could have multiple "prototype blocks", perhaps reflecting changing understandings of a particular concept, perhaps written by different people.

Prototyping is considered a legitimate part of the research process. Although the information in any given prototype block could be out of date, it can be vital for tracking down reliable sources which offer insight into whatever statements the prototype block claims or references.

Prototype blocks should contain:
alias - one or more names believed to apply to concept at the time the prototype block was written
body - freeform description of concept. the first version must be kept immutably but afterward it is allowed to change or be kept in multiple versions.
unique identifier - unique ID string which is permanent and immutable within a given instance database but namespaced within a particular domain name or understood name of a particular instance of WikiPrime. this identifier should not be a natural language string, and it should not be a public-facing integer. it can feasibly be a random alphanumeric string of the kind used on archive.is, or on YouTube. alternatively it could be a hash of the kind created with git commits.
date - date the prototype block was first recorded or archived, in UTC. this is allowed to change if someone realizes that a prototype block was actually recorded earlier than first thought.
submitter - user that submitted the concept within the prototype block. if the concept was submitted by an external source, some kind of user ID should be made on the instance to represent this, such as "YouTubeCommenters", etc.
submitter string - manually written name of submitter. if this matches an existing username, this should be stored as blank. otherwise, allow it to contain a more specific description of an external submitter.
prototyper - user that wrote the prototype block.
philosophy or category (trad) - color code to show the prototype block in. there is also a second color code which will apply to the list that prints the prototype block, but this would be inferred from which concept entity it was most strongly associated with, and hence stored on that.

After each prototype block has been assigned an identifier and the first version of its text has been archived immutably, users can
- assign it to one or more concept entities that it is meant to provide guidance on using its permanent identifier (this would be recorded in the database)
- link the prototype block to sources using wikitext or entry identifiers (this would be within the editable prototype block itself)

New prototype blocks may be created at any time, in order to split long prototype blocks into smaller ones that are more easily used, etc. If this happens, the new and old versions should be linked to each other in the database in order to trace versions of the same concept.
Each individual prototype block with its own unique identifier made at creation loosely corresponds to a MediaWiki page while the concept of linking from one prototype block to another loosely corresponds to linking to MediaWiki revisions. Basically, the simplest way to do it would be that the most recent version of each separate prototype block sits beneath that block's unique identifier, other blocks link to that identifier, and then that brings up the most recent edit of the block.

Data types

These are the kinds of mathematical objects that must be represented by columns in the MediaWiki database (the fields that each entity has above).

Unique identifier (EID)

String. This type of identifier is permanent and immutable as far as users are concerned, should be totally unique among all the entities on a WikiPrime instance, and should not be "pretty" such that users would be tempted to change it.

Tradition / genre or category

This data object is used for color-coding concept entities by what series, author, genre, common topic, academic field, philosophy, or faction they are associated with. The scope of what a "tradition" can be here is rather broad, and will be decided within each particular WikiPrime instance while deciding what the primary topics of the wiki are. For example, "Undertale-Deltarune", "Fire element", "emo (music genre)", "ecology", or "Kantianism" could all equally be used as "traditions" within some wiki where any of those topics are considered central categories.

A tradition object is associated with:
letter code - this can range from 2-4 letters. one particular tradition should have one code, but if backwards compatibility becomes necessary, the same tradition may be added again with another code.
classname - HTML classname for concept entities classified into this tradition. this is the only way entities should be styled; entity colors should not be stored in the MediaWiki database in order to allow for features like user customization of tradition colors or gradients within default stylesheets.
entity - concept entity describing this category, so that it can have one or more natural-language labels and each can be localized into multiple languages.

Agenda

There are a few notes I want to make here about why particular design decisions were made. This is between LithoGraphica users and me; this should not be included within a manual posted on a git forge.

  • "Characteristics"
    • In Wikibase these are called Properties. I changed it to Characteristics because I was tired of looking at the word "Properties" or using that as an expression to describe something 'naturally' and unquestionably contained in something else. I know changing this word will not change the world. I just think it promotes clearer thinking about what Characteristics are and do.
    • "Characteristics" invites users to ask if the Characteristics applied to a given concept entity are part of its essence or were arbitrarily assigned.
    • "Characteristics" suggests that concept entities have history and might develop from one thing into another thing but not develop in the exact same way other things do.
  • Tradition: this was quite explicitly made for studying antagonistic philosophical traditions and labeling statements with their particular bias. However, it can be put to any number of other uses.