The always-visible Snapshot opslaan / Snapshot openen controls save and
resume the current graph, view and PLAY step as an .ogn paradata snapshot.
The naming dialog can be dragged by its title bar. Config selects either a
draggable, resizable Graphlite window inside the application or a new browser
window. The in-app option opens immediately after file selection. The browser
window option uses a second explicit Open in new window click to avoid popup
blocking. Both modes have an independent viewer and PLAY state, preserve the
original graph and work on static GitHub Pages without a server upload.
The naming dialog combines selected views with recent graph actions and offers
multiple editable filenames.
Want to test or contribute? Start with MEEDOEN.md. The same structure is used for numbered publications: one built-in README topic with its own carousel per episode. See AFLEVERINGEN_PUBLICEREN.md for the workflow and AFLEVERINGEN_PLANNING.md for the seven-episode plan and its slide-by-slide carousels.
Open Graph Notation writes nodes one at a time into free positions of an open
grid. Every node owns one horizontal and one vertical grid line:
A ≠ B ⇒ x(A) ≠ x(B) and y(A) ≠ y(B).
The fixed explanatory order is OGN Free Placement, OGN Projection,
then OGN Calculated Placement. A Language Tree is a calculated application
of OGN, not the definition of OGN itself. Episode 1 and its seven-slide
carousel form one canonical README content unit. Language Tree, LEX, branching
versus utterance order, and transformation diagrams follow in later episodes.
See OGN_CORE_PLACEMENT_ARCHITECTURE.md
and AFLEVERINGEN_PLANNING.md.
The documentation now follows the operation of Open Graph Linguistics (OGL):
- Tree Build constructs every kernel clause as a free Language Tree.
- HOR/VER space is reserved before drawing for valid placements and later LEX switches.
- LEX realizes word order. Only a real positional change receives a vertical arrow on the LEX axis.
- Flip selects another left/right or short/long rendering of the same tree when required.
- Utterance combines one or more kernel clauses; three or more form a Story.
- PLAY exposes Tree Build, Flip, and LEX step by step.
Tree Build must not obtain correct word order by moving an otherwise stationary word after the fact. It therefore reserves HOR space for free columns, branches, Flip, and vertical anaphor links, and VER space for source rows plus free LEX target rows such as V1, V2, Comp, and enabled insertions.
For HOND BIJT MAN, HOND and MAN remain on their source rows without arrows.
Only BIJT switches to the pre-reserved V2 row and receives a vertical LEX-axis
arrow. The result is HOND — BIJT — MAN. No movement path is drawn from the
tree itself.
Publishing: when local Playwright or Chromium is missing,
publish_checked.batoffers to install the pinned tools before running the checks. AnswerJ; local tooling stays outside Git and the release ZIP.
Alongside Free Node, Flip is essential to Language Tree notation. Free Node assigns every node a free grid position; Flip selects the visible left/right and short/long variant of a binary branch. Structure remains intact, while LEX remains the ultimate result: the fully realized utterance.
In the causal fixture only K2, HOND BIJT MAN, flips. This permits both
HOND ↔ HOND and JAN ↔ MAN to remain vertical. LEX then independently
realizes JAN SLAAT JEK OMDAT DIE HEM BEET. See
UITING_EN_KERNZINNEN.md and the technical
FLIP_CONSTRAINT_SOLVER.md.
An utterance consists of one or more linked kernel clauses. This build adds
Jan wast zichzelf, Jan slaat Jek omdat die hem beet, and Ken uzelf
as selectable utterances. Their referents, coreference, causal relation, role
flip, and implicit addressee are recorded in
UITING_EN_KERNZINNEN.md and
samples/uitingen-kernzinnen.v1.json.
Each utterance now opens as two independently calculated kernel-clause trees,
K1 above K2, with declared vertical anaphor connections and one shared LEX
axis for the realized utterance. The causal source trees align both
HOND ↔ HOND and JAN ↔ MAN, realized on LEX as forms such as die and
hem; the imperative keeps its implicit subject off LEX. The
original S1/S2 anaphor demonstration remains available separately.
The causal K2 source node HOND is directly clickable and cycles its LEX form through
hij / die / die hond / de hond / Jek. All five refer to Jek; both
DIE HOND and DE HOND remain one subject NP while LEX displays their two
words separately. Horizontal and vertical actual grid-cell sizes can be
configured independently between 60% and 200%. K2 must flip locally when JAN and JEK exchange
subject/object roles and both coreference links must remain vertical.
The visible Play bar builds each composition in five content phases: K1,
K2 before Flip, the visible FLIP K2, vertical alignment, and the realized
LEX utterance. During the Flip phase the old K2 remains as a faded red ghost
behind the new K2, while dotted guides show the moved nodes. Previous, Next,
and Reset remain available.
The active test utterance remains visible above the graph. Kernel syntax
consistently uses S → NP, VP and VP → NP, V; LEX independently realizes
surface word order. Every binary node visibly branches left and right.
Config independently controls compact horizontal and vertical branch spacing,
tree color, branch weight, and an explicit Flip. Flip mirrors both trees
without changing syntax, realized LEX word order, or vertical anaphors:
structure, visible orientation, and word order are separate properties.
The optional global Flip mirrors both trees; unlike the necessary local K2
flip, it is a display choice rather than a role-alignment requirement.
Every branch connects two free OpenGraph nodes with distinct horizontal and
vertical coordinates. Even short branches remain slanted; compact node shapes
and labels are sized to keep their connections visible.
Tree branches are compact, clearly visible, strong blue lines by default.
OpenGraph Lite Viewer is a viewer and test environment for general Open Graph
Notation. This release is built exclusively on the uploaded
v2.0.0-rc.26 source through rc.27; rc.28 restores the documented OGN/UI
contracts without importing source files from the abandoned alternate version
line.
Dutch documentation: LEESMIJ.md.
The minimal functional contrast DE MUZIEK ONTROERT ANNA preserves the
syntax (S → NP VP; VP → NP V) while the Functional CLAUSE labels the
subject as STIMULUS and the object as EXPERIENCER. This prevents
subject/object from being conflated with agent/patient. The role contrast is
grounded in Belletti & Rizzi (1988),
Psych-Verbs and Theta-Theory.
General Flip and V-cluster Flip are distinct. A general Flip only changes the free graphical realization of a binary subtree and must preserve node identity, structure, roles, LEX, the OGN uniqueness invariant, and required anaphor alignments. A V-cluster Flip swaps the actual syntactic daughters and therefore rebuilds their derived LEX order; it is enabled only for a genuine multi-member cluster in a subordinate input with a registered alternative.
Validation status: rc.45 was manually approved on 2 August 2026, including the Greedy Grow reconstruction, its evidence boundary, desktop, mobile and publication carousel. Automated checks continue to verify the geometry and feature invariants.
The fixed first example connects two independently calculated OGN trees:
S1: Ik zie een man. S2: Hij draagt een hoed. MAN is the antecedent and
HIJ the anaphor; both are coreferential. After both trees pass the OGN grid
invariant separately, S1 is placed above S2 and the complete S2 is translated
rigidly until MAN and HIJ share one declared column. A shared LEX axis orders
S1 before S2. The MAN–HIJ connection is a straight vertical line without an
arrow or direction. See MULTI_OGN_ANAPHOR.md.
Open Graph Notation writes nodes one at a time into free positions on an open grid. Every node owns one horizontal and one vertical grid line.
Hard rule — A ≠ B: two different nodes may never occupy the same horizontal or vertical grid line.
A ≠ B ⇒ x(A) ≠ x(B) and y(A) ≠ y(B)
A new node may therefore be written only when both its row and its column are unused. This also applies to applications. If placement cannot find a valid row and column, no fallback node is rendered.
A violation is called grid-line reuse: horizontal reuse shares a row; vertical reuse shares a column. Both are always invalid.
current occupancy
→ free positions
→ rule set
→ search strategy tests candidates
→ write the first valid position immediately
A rule set determines which free candidates are valid. A Search Strategy determines the order in which candidates are tested. Direct placement writes the first valid position found immediately; another search order may therefore produce another picture.
Greedy Grow has an accepted reconstruction. It starts at the
central grid point and writes one dot per step without storing a future
layout. The historical four-arm order reproduces the preserved 12-, 31- and
96-node demos exactly; four recovered experimental search orders make their
different growth pictures inspectable. Field size and perimeter are shown as
diagnostics, not as a proven global optimum. Open
greedy-grow.html and see the
technical reconstruction. Publication
slide 5 is derived directly from the same accepted engine.
The explanatory order is fixed:
- OGN Free Placement — write nodes one by one into free grid positions;
- OGN Projection — derive markers or orderings from already placed source nodes;
- OGN Calculated Placement — let an application calculate a placement plan first.
See OGN_CORE_PLACEMENT_ARCHITECTURE.md.
The Language Tree menu now contains the placement hierarchy itself. Language Tree remains the prominent, primary calculated application; Anaphor · multi-OGN is the second calculated application. Greedy Grow and Random appear below it as smaller direct OGN illustrations. In a direct mode, every arrow/Play step immediately writes one node on a currently unused row and column; language-only menus are hidden and the Language Tree data is left unchanged. Random uses a separate seeded engine, so it cannot alter the accepted Greedy Grow reconstruction.
Config now has strictly separated contexts: General, Calculated →
Language Tree / Anaphor · multi-OGN, and Direct → Shared / Greedy Grow /
Random. General holds
only application-independent interface, README, and file settings; pre-config,
tree, examples, LEX, SYNT, and LOG exist only under Language Tree. All
irrelevant settings are no-show within a context. Greedy shows only strategy and orientation; Random
only its own seed, reset policy, model, placement, grid size, conditional fixed
dimensions, speed, iterations and axis image. Every visible field has a compact
expandable explanation inside Config. A larger seed is not more random and
does not change speed; 20260802 is merely the memorable date 2 August 2026.
See CONFIG_UI_EXPLANATION_STANDARD.md.
When Config is opened from an active Greedy Grow or Random mode, the application bar itself is also no-show. Only Back to Main, that method's own fields with Explanation, and Config save remain visible. Select another application in Main first.
A new default Config uses Uniform v1.0, Anywhere in available space and
Interface · available space. Impure uniform v0.1 is a functional
alternative that mixes in a 20% preference for axis positions hit more often
in completed earlier rounds. Fixed grid, Compact, Balanced, Wide and the
growing content field remain available. v0.2 and v0.3 remain no-show until they
genuinely work. Play and Next cross run boundaries until all configured
iterations are complete; Previous can cross back. For example,
10 completed iterations with 31 nodes produce 10 × 30 = 300 projection hits
per axis; the centre node is excluded. A round adds its rows as WEST hit spots
and its columns as SOUTH hit spots only after its final node is written. A
repeated hit makes the existing spot darker and heavier. Occupancy mode scales
against the configured round total, while Relative mode scales against the
highest count among completed rounds. No future round is generated for this
axis image. Uniform Random predicts an increasingly even distribution, while
v0.1 can mildly reinforce early differences; an
axis with exactly N lines for N nodes is hit at every non-central position
in every round. An unchanged Greedy strategy is deterministic and is therefore
not repeated. See
DIRECT_PLACEMENT_CONFIG.md.
Under Config → View → Line appearance, grid color and the weights of grid,
projection and box lines can be set independently. LEX, SYNT and LOG also have
independent colors—blue, green and purple by default—and matching axes,
projection lines and boxes follow their own color. These are presentation
settings only; they never change coordinates or placement validity. See
LINE_STYLE_AND_PLACEMENT_MODES.md for
the complete mapping and the structural EOF/EOL policy used by publication.
The current viewer implements a Two-Pass Language Tree as one calculated
OGN application. Its OGN Base profile contains the ordinary
Syntax/Functional tree, grid, the named LEX/SYNT/LOG projections with S/O/V
majors, and examples without optional insertions. The profile name means “base
of this language application”; it is not the definition of OGN Core.
Insertion defaults to off on LEX, SYNT and LOG.
Config → Pre-config enables insertion independently per axis without adding
linguistic content. Config → Applications then provides Adverbs as the
first application. It becomes available only after insertion on LEX + LOG
is enabled. When Adverbs is off, its examples, LOG minors, direct LEX
insertions, controls, runtime data, documentation links, and export fields are
absent. OGN exports record profile: "base", extras: [], and all three axis
switches.
Config also shows three disabled reservations for later applications:
Question sentence, Emphasis (for example juist díe trui), and
Incomplete sentence. They are deliberately outside the active feature
catalogue and therefore add no state, samples, insertions, documentation,
storage, export fields, or rendering behaviour.
Config → README topics edits the complete README item, not just its images.
Every topic has a Show: yes/no switch, NL/EN navigation titles, and NL/EN
content in limited safe HTML. No hides the topic without deleting it, so it
remains available in Config. Scripts, forms, styles, frames, event attributes,
and unsafe link schemes are removed before custom content is rendered.
The same editor manages the topic carousel: add/remove active slide,
previous/next, wide/narrow shape, NL/EN alt text and captions, live preview,
and full topic reset. A normal path or https URL remains supported.
Config → Files & export can additionally insert a local PNG, JPEG, WebP, or
GIF directly as an embedded slide. The limit is 1.25 MB per image and the
combined embedded payload is bounded to protect browser storage. A manually
typed data: URL remains blocked; only images created by the trusted file
insertion route are accepted.
The shared Config Save bar now appears above every Config section. It stores topic text, visibility, and carousel overrides together. Graph shortcuts stay inactive while Config or README is open and while a form control has focus.
Every full project zip contains both
config/default-config.json and config/user-config.json. The viewer applies
the bundled default first and then the enabled user file as an override. The
default is never physically replaced.
When running through start_local_viewer.bat, choose
Config → Files & export → Write current Config to project. The local,
allow-listed save endpoint writes the current snapshot to
config/user-config.json; this file is then included in the next full-source
zip. On a regular web server, use Download user config and put that file in
config/ manually.
Precedence is:
code defaults → config/default-config.json → config/user-config.json
→ browser-local saved Config
The final browser-local snapshot remains device-specific until it is written to the project user file.
The viewer starts with LEX on West. After project and browser Config have loaded, every page load resets East, North or South to West. All four sides remain available during the current session. This applies both through the local server and on GitHub Pages. West/East keep the tree fixed and only exchange the projection sides. North/South rotate the complete graph as one rigid unit; branches, node shapes, circles and labels therefore remain connected.
The established LEX orientation control contains West, East, North and South. Config offers one to four real test-material list panels independently for desktop and mobile. A group always remains inside one panel; desktop starts with the Sentence and Utterance families separated across two panels. For North/South, LEX can also be enabled or disabled separately for kernel clauses K1 through K8.
A verbal-cluster flip is available only when the input has subordinate-clause
order and contains a real syntactic V-CLUSTER, for example with dat,
omdat, or hoewel. Click the V-CLUSTER node itself to exchange its two
daughters: OMDAT VROUW TRUI HEEFT GEBREID ↔ OMDAT VROUW TRUI GEBREID HEEFT.
There is no separate flip button beside the input.
The pipeline is input → syntactic analysis → reconstructed LEX utterance.
Initially, LEX reconstructs the input. A flip first changes the V-CLUSTER
subtree; LEX is then derived again from that tree. SYN displays the changed
structure, while Functional and LOG remain unchanged when functions, roles,
and interpretation do not change. Main clauses and single finite forms such as
BEET receive no cluster flip. The action never changes an anaphor's referent.
Every project zip includes seven numbered 1080 × 1080 PNG slides under
publicatie-carrousel/slides/ and their
single editable, self-contained
publicatie-carrousel/index.html source.
Upload files 01 through 07 in order as one image gallery.
Slide 4 shows nodes projecting to WEST, SOUTH and EAST. Slide 5 is the
Direct — Greedy Grow example; slide 6 is the
Calculated — Language Tree example, with HOND · BIJT · MAN on the west
LEX axis. Both example slides refer to github.com/kruin/graphlite.
The carousel is always derived. Never edit a PNG or carousel ZIP directly.
If you only want to publish the supplied PNGs, no installation or batch file is
needed. To edit the source on Windows, work in the extracted full project ZIP,
run installeer-carrousel-tools.bat once, edit only
publicatie-carrousel/index.html, and then run
maak-publicatie-carrousel.bat. The installer pins Playwright and its matching
Chromium browser; Node.js 18 or newer is required. The build exports all seven
slides, writes publicatie-carrousel/derived-manifest.json, verifies the
source/exporter/PNG hashes, and replaces the sibling carousel ZIP. Run
maak-volledige-zip.bat afterwards to put the result into a new full project
ZIP. Local node_modules and browser files are never packaged. The standalone
carousel ZIP is also rebuildable, but rebuilding it does not modify a separate
full project folder. The full-source ZIP build stops when the derivation proof
is missing or stale. A final visual check remains required.
PUBLICATIE_README.md supplies the exact order,
per-slide alt text, Reddit instructions, and ready-to-copy Dutch and English
text for other platforms. Replace the marked live/source/video URLs before
posting. rc.45 remains a release candidate by version name and was manually
approved on 2 August 2026. Use
RC45_OGN_CORE_EXPLANATION_TEST.md for
the core explanation and carousel check; the inherited rc.43 Config checks remain in
RC43_CONFIG_README_PROJECT_TEST.md.
The structural tree is still placed bottom-up on the HOR/VER grid. Before
drawing, a second recursive pass measures each subtree from its actual node
shapes, labels, child boxes and caption. A small unary box such as
NP → HOND therefore uses only its required width and height; larger S, VP and
Functional structures expand independently.
Applications declare abstract layout demands rather than SVG coordinates.
Adverbs, for example, declares that it can add wide LEX insertion content.
The central layout policy reserves the corresponding space. Handheld MAX
includes the complete LEX content and the complete Syntax and Functional rule
boxes in portrait, landscape and forced desktop. LEX reserves only its active
slots and movement lanes, while Syntax and Functional share one stable east
axis over their combined structural grid envelope. See
RECURSIVE_LAYOUT_AND_APPLICATION_CONTRACT.md.
| Stage | rc.42 behaviour |
|---|---|
| Structure and config | Decide which nodes, axes, majors, minors and application contributions exist. |
| Grid placement | Places structural nodes and subtrees on the HOR/VER cell grid. This is not yet text-aware pixel packing. |
| Visual subtree measurement | Measures node shapes, labels, descendant bounds, caption and central padding bottom-up. Only the visible subtree rectangle uses this result. |
| West/LEX placement | Starts from the measured left edge of the active root subtree, then reserves the active LEX slots and movement lanes plus a small clearance. |
| East/SYNT placement | Uses one shared structural grid envelope for Syntax and Functional, followed by the complete rule boxes. It is not derived from the measured right edge of every subtree. |
| Viewport fit | Keeps complete LEX content, the central structure, complete rule boxes and LOG inside a stable Syntax/Functional frame. |
| Rendering | Draws the resolved result; it does not add linguistic content or choose new positions. |
This distinction matters. rc.42 has recursive box measurement, but it is not yet a general collision solver that repositions every node when a label becomes wider. In portrait, the complete left-to-right composition uses the available width; because that composition is intrinsically wide, text can remain smaller and vertical whitespace can remain. Pan/zoom is available. A stacked portrait composition would be a separate future layout decision.
For manual approval, use
RC41_RECURSIVE_LAYOUT_TEST.md.
This section applies when the Adverbs application is enabled.
OGN does not store an ambiguous form as uncontrolled duplicate dictionary entries. The lexicon stores one lemma with multiple possible usage profiles; the concrete sentence instance selects the applicable profile.
A profile records origin, function, scope and preferred interval. Origin is
LOG, LEX or LOG+LEX. Only LOG-containing profiles create a south-axis
minor, while all origins receive a destination in the precomputed LEX plan.
Multiword constructions such as misschien wel refer to existing lemmas and
may retain one visible LEX slot. When alternatives change OGN notation, the
viewer asks the user. The choice applies only to that sentence instance and
does not rewrite the global lexicon. Config can clear the choices for the
active example.
See LEXICON_USAGE_PROFILES_AND_DISAMBIGUATION.md.
source node → horizontal LEX projection at source height → only an explicit switch may move it
S, O and V are majors. An adverbial insertion may be a LOG minor, a direct LEX insertion, or a group combining both origins. Every minor adds one fixed slot to the distance between its bounding
majors. LOG plans possible LEX positions but does not thereby move a source
node: every lexical source projects horizontally at source height. Only an
explicit target that is actually higher than that visible source may perform
a switch. In HOND BIJT MAN, MAN therefore stays exactly at MAN source
height; only BIJT can switch upward to V2. LOG reservations never replace
this source reference. See projectie-master-spec.md.
LEX currently contains upward switches, application-specific insertions, and directly written Comp only. Generic empty positions before, after, or between active rows and every downward/post-V2 switch are no-show: no Config control, rendering, or new storage. Their possible use will be evaluated separately.
Sentence type is a separate Language Tree choice: declarative main clause,
yes/no question, dat-clause, or omdat-clause. A question uses V1;
DAT and OMDAT are written directly in Comp. Perfect is a verb form, not a
sentence type. See LEX_MOVEMENT_RULES.md.
index.html
Or run locally:
localserver.batlocalserver.bat is the familiar short name and delegates directly to
start_local_viewer.bat. That checked launcher uses one detected Python 3
installation. First choose Extract all for the downloaded ZIP; do not run
the BAT from inside the compressed folder. The BAT only checks that extraction
is complete and starts
start_local_viewer.py. That Python launcher controls server detection,
starting, waiting, version validation and opening the browser. It opens
reset-cache.html only after port 8088 serves both the exact version and the
exact SOURCE_BUILD.txt identity from the current folder. This also catches
an older source package carrying the same rc.45 version number. If the launcher
reports another source, close the old OpenGraph local server window and
start the BAT again. The concrete reason remains visible before Press any key.
On a large screen, the local LOKAAL selector appears at the bottom right.
mobile portrait stays inside a 390 × 844 frame and mobile landscape
inside an 844 × 390 frame. The large automatic view returns only after
selecting auto.
After all local changes have been pushed, GitHub's automatically generated ZIP
of branch main is the standard hand-off. It contains the checked SQLite
database, source references, configuration, tests and PROJECT_MEMORY.md.
Upload that ZIP to the new conversation and ask it to read
PROJECT_MEMORY.md before changing the project. ChatGPT account memory and
earlier conversation text are not repository files and are therefore not
transferred. Local browser snapshots, logs, database backups, SQLite WAL/SHM,
node_modules, Playwright browser binaries and unpushed changes are also not
included and are not required to reconstruct the checked source.
See PROJECT_MEMORY.md and GitHub's
source archive documentation.
Rename the project directory to the intended release name and double-click:
maak-volledige-zip.batThe batch file derives the ZIP name from its own containing directory. A
directory named OpenGraph_Lite_Viewer_v2.0.0-rc.45 therefore produces the
sibling file OpenGraph_Lite_Viewer_v2.0.0-rc.45_full_source.zip. An existing
ZIP with that exact name is replaced safely; the script never invents a
(1) suffix.
Files matching *_full_source*.zip are generated release artifacts, not
project source. This includes a browser download such as
OpenGraph_Lite_Viewer_v2.0.0-rc.45_full_source (1).zip. Such copies are
ignored by the manifest and publication checks, are not staged for GitHub
Pages, and are excluded when a new full-source ZIP is built. They may therefore
remain locally without blocking publication, although deleting old copies
keeps the project folder clearer.
GitHub Pages:
https://kruin.github.io/graphlite/index.html?ogv=v2.0.0-rc.45
Cache reset:
https://kruin.github.io/graphlite/reset-cache.html?ogv=v2.0.0-rc.45
The readable full-window view is the default. It is shown first under
Config → View:
Tree spacing = MAX · large text / low tree
Window fit = MAX · use full window
MAX fits the actually drawn tree and projections to all available desktop space. The invisible stability frame, grid and helper labels no longer make the graph and its text artificially small. The same MAX frame remains stable throughout the phased Play sequence.
On a physical phone, MAX includes the complete LEX content, central structure,
SYNT axis and full rule boxes in both portrait and landscape. Landscape uses a
genuinely lower, wider layout and a contain fit, so the grid top and the
complete LEX, SYNT and LOG axes remain visible at the same time. Two compact
menu rows, the SVG and the Play bar use separate vertical zones. This also
applies when Interface → Desktop is forced on the phone. Pan and pinch zoom
remain available for closer inspection.
The grid itself now ends at LEX on the left, SYNT on the right and LOG at the bottom; it no longer continues past those axes.
Config follows the dependency order and links to these focused sections:
Pre-config: insertion independently on LEX, SYNT and LOG;Applications: Adverbs requires LEX + LOG;OverviewandJaN · TODO;Save & export: LinkedIn/Play/SVG first, followed by OGN, Config save/restore and example management;View: MAX, Syntax / Functional, tree layout and projection colours;LOG & LEX: core LEX order and, when enabled, optional insertions;Advanced: legacy branch-extension and top-menu placement options.
Window fit means how the tree uses the available app window. It is not a
second application window.
Open Config → Save & export. The first, highlighted card provides three
local exports:
LinkedIn PNG: a white 1200 × 627 image for an image post;Play video: an automatic 1200 × 628, fixed-30-fps recording of the complete phased Play sequence;Graph as SVG: a self-contained vector file of the complete current graph.
The recorder now prefers MP4/H.264 when the browser supports it and otherwise
uses WebM. It actively requests all 30 frames per second; the old recorder
captured only changed canvas frames and could therefore fall below LinkedIn's
10-fps minimum. Keep the browser window active until the recording downloads,
then upload it through LinkedIn's Video action. See
docs/SOCIAL_EXPORT.md.
The README / LEESMIJ button opens immediately on
Start · OGN Core. The topic list and active text remain independently
scrollable in every interface mode.
The first carousel explains the application-neutral core in four steps: free grid positions, sequential node writing, search order, and the fixed layer order. It introduces no specialized extension.
The external example-search link opens in a separate browser window. Closing that window returns the user to the still-open app.
After the central tree has been built, Play presents the projection process in two explicit phases:
1. draw the LOG axis and place majors/minors
2. project lexical sources horizontally at source height and perform only
explicit upward switches to topic, V1, or V2
LOG may plan candidate positions but does not itself move a source. SYNT and the remaining projection panels appear in the final step. There is no separate empty space phase. The previous-step button now reverses the same sequence exactly: the final projection layer disappears first, followed by LEX, LOG and then the central tree.
1. Syntax
2. Functional
Syntax shows the syntactic tree. Functional shows the functional roles for the
same approved kernel-clause analysis, including CLAUSE, ARG-STRUCT, PRED,
AGENS and PATIENS where available. LOG is not a central view. The prominent
Syntax | Functional switch is outside the placement-method menu and applies
to every kernel clause in an utterance, story or anaphor composition. It is not
shown for Greedy Grow, Random or bare Direct views.
Compact is placed next to this switch. It selects the safe compact recursive layout, compact horizontal and vertical kernel branches, and clears previous manual stretching. Text, labels and node symbols keep their readable size.
The complete input-to-analysis, Functional, SQLite and Compact contract is in
FUNCTIONAL_DATABASE_COMPACT.md.
LEX west axis
SYNT east axis
LOG south axis
LEX, SYNT and LOG are visible by default. Each projection can be disabled
independently. Geen shows only the central Syntax or Functional view; Alle and Reset
restore every projection. Switching projections does not alter the central
graph, viewport or scale.
Adverbial insertions do not mutate Syntax or Functional. The selected usage profile determines origin: LOG and LOG+LEX produce a south-axis minor, while a direct LEX insertion does not. Source nodes project horizontally to LEX and every origin receives a precomputed neutral LEX target. An explicit topic/V2 rule can replace that target before one direct visible move is drawn.
The active sentence is printed above the graph, with clear space below it for a possible future north axis.
The adverb list now includes four deliberately bounded multiword units:
MISSCHIEN WEL, AF EN TOE, OP DIT MOMENT, and
MET VEEL AANDACHT. Each complete phrase currently acts as one visible LEX
unit. Its usage profile determines whether it also has a LOG minor, a direct
LEX origin, or a mixed origin; internal syntax is not expanded yet. The set samples
modality, frequency, time, and manner without claiming a complete inventory of
adverbial phrases. See
docs/TALIGE_UITBREIDINGEN.md.
OGN Base: Sentence · Syntax/Functional · Interface · Projections · LOG order · Language · README · Config
Adverbs on: Sentence · Adverb · Syntax/Functional · Interface · Projections · LOG order · Language · README · Config
There is no generic Menu button and there are no nested submenus. Choice
items open their own wide panel directly.
.ogn is the primary round-trip document format. It separates:
metadata document identity, format and generator
data graph, projections and analysis choices
paradata optional workspace and local session events
Paradata may be omitted during export. Older JSON files remain readable as a
migration format; Legacy JSON export remains temporarily available for
debugging. See OGN_STORAGE_FORMAT.md.
Only .ogn supports a complete round trip. SVG, PNG, and Play video are
derived export formats and cannot reconstruct the analysis. In
Config → Export folder and output, one folder can be selected for OGN,
SVG, PNG, video, Legacy JSON, and logs. The browser stores the directory handle
locally and remains in control of permission. If the directory API is
unavailable or writing fails, Graphlite falls back to the normal browser
download. Open .ogn from export folder starts in that folder where the
browser supports it.
VERSION.txt is authoritative for HTML, JavaScript, the service worker, cache
queries, the publication script and the release ZIP name.
node --check viewer.js
check_release.bat- The viewer contains 14 example sentences, including two examples with multiple LOG minors.
- With automatic placement, an explicit sentence-instance landing position such as
post-object-pre-vclustertakes priority over a broad class default. Scope and linear position remain separate. Opslaan als .ogndownloads the current analysis.Importeer .ognopens a previously exported document.- Paradata is optional.
A classical planar constituent tree often makes one geometric ordering perform two representational tasks. Formally, those tasks must be distinguished:
- branching order is the structural ordering of nodes, determined by dominance and precedence among sister branches;
- utterance order is the total linear ordering of realized lexical elements.
When the left-to-right order of the terminals must encode both, the two orderings are conflated. OGN separates those tasks.
central branching under S = branching order
LEX projection = utterance order
The same central structure can therefore support different surface strings without mirroring or rebuilding the tree, or treating word order as a transformation of the central tree.
The viewer calculates one complete placement plan before drawing:
- determine structural hosts;
- determine lexical insertions and landing positions;
- reserve grid space and exchange corridors;
- place the central tree;
- fill the core sentence lexically;
- fix projections, traces and exchange paths;
- assign growth/render steps;
- render the fixed result.
The renderer does not choose new positions or reserve new space. Play/Growth reveals the precomputed layout step by step.
- Working notation:
S:np-VP, explicitly notS:NP-VP. - Research notation:
S+ np-VP. - Binary trees first; non-binary multi-branching trees later.
- V-clusterflip: verwissel de twee dochters van de V-CLUSTER-subboom; LEX
wordt daarna opnieuw uit die boom afgeleid (
heeft gebeten↔gebeten heeft).
Een testitem vertegenwoordigt voortaan een zinsfamilie. De keuze Tijdsvorm bouwt zin, Language Tree en alle projecties opnieuw op:
- OTT — onvoltooid tegenwoordige tijd;
- OVT — onvoltooid verleden tijd;
- VTT — voltooid tegenwoordige tijd;
- VVT — voltooid verleden tijd.
HOND BIJT MAN, HOND BEET MAN, HOND HEEFT MAN GEBETEN en
HOND HAD MAN GEBETEN zijn dus geen vier testitems meer. Hetzelfde geldt
voor terugbrengt/terugbracht/heeft teruggebracht/had teruggebracht.
De intransitieve controlefamilie HOND VALT gebruikt in de voltooide tijden
correct zijn: HOND IS GEVALLEN en HOND WAS GEVALLEN.
Ook de functionele testcase DE MUZIEK ONTROERT ANNA is een tijdsfamilie;
de rollen blijven Stimulus/Experiencer terwijl de tijdsvorm verandert. Bij
meervoudige uitingen is K1 de bedieningsbron: na een expliciete tijdskeuze
volgen K2 en K3 dezelfde tijd en worden al hun bomen en projecties herbouwd.
De oorspronkelijke input blijft de onaangetaste beginweergave.
Tijdsvorming is een formatieve/morfosyntactische bewerking, geen Flip.
Vraagvorming en passief worden later als afzonderlijke formaties toegevoegd;
ze worden niet in de tijdsvormknop verstopt. Zie
TIJDSVORMING_EN_FORMATIE.md.
In the built-in README, drag the separator between the topic list and the selected text to enlarge or reduce the text panel. The separator works horizontally on desktop/landscape and vertically on portrait screens.



