Parameters: consider what to conceptualise as a Scale
It is clear by now that a `Scale` will act as a refinement of a full-domain value type. However, in order to develop the definition and builder notation for parameters, a much more detailed understanding of scales is necessary -- including the question where to draw a line between the complex structured `ParamSet` and a simple `Parameter` that is conceived to be number-value-like.
This commit is contained in:
parent
5fbe08ebe0
commit
59fbb8e6b0
5 changed files with 752 additions and 13 deletions
53
src/lib/par/nom-set.hpp
Normal file
53
src/lib/par/nom-set.hpp
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
NOM-SET.hpp - nominal scale domain
|
||||
|
||||
Copyright (C)
|
||||
2026 Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
||||
**Lumiera** is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version. See the file COPYING for further details.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/** @file nom-set.hpp
|
||||
** Collection of identifiers to constitute the domain for a nominal or ordinal scale.
|
||||
** The scale descriptor is used as delegate from the ParamType descriptor and maintained
|
||||
** within a global registry for sake of deduplication. It is expected that a lot of parameters
|
||||
** will share some common scales, like e.g. percentage values or decibels. The setup of a scale
|
||||
** may limit the value range, provide hints for the UI representation -- yet may possibly also
|
||||
** encompass nominal scales that comprise a selection of ID values.
|
||||
**
|
||||
** @todo WIP-WIP-WIP can be considered an initial draft and placeholder, as of 2026
|
||||
*/
|
||||
|
||||
|
||||
#ifndef LIB_PAR_NOM_SET_H
|
||||
#define LIB_PAR_NOM_SET_H
|
||||
|
||||
|
||||
#include "lib/par/spec.hpp"
|
||||
|
||||
|
||||
namespace lib {
|
||||
namespace par {
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Interface: describe the properties of a value scale to use for parameters,
|
||||
* including range limits and metric (linear, logarithmic). The core operation
|
||||
* is to conform a value to this specific scale.
|
||||
* @todo not clear if we want a virtual interface here....?
|
||||
*/
|
||||
class NomSet
|
||||
{
|
||||
public:
|
||||
};
|
||||
|
||||
|
||||
|
||||
}} // namespace lib::par
|
||||
#endif /*LIB_PAR_NOM_SET_H*/
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
PARAM-TYPE.hpp - value scale to use for parameters
|
||||
SCALE.hpp - value scale to use for parameters
|
||||
|
||||
Copyright (C)
|
||||
2026 Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
|
|
|||
|
|
@ -20,3 +20,8 @@ END
|
|||
PLANNED "Parameter value scales" ParameterScale_test << END
|
||||
return: 0
|
||||
END
|
||||
|
||||
|
||||
PLANNED "Enumeration domains" NomSet_test << END
|
||||
return: 0
|
||||
END
|
||||
|
|
|
|||
87
tests/lib/par/nom-set-test.cpp
Normal file
87
tests/lib/par/nom-set-test.cpp
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
/*
|
||||
NomSet(Test) - verify nominal and ordinal scale enumerations
|
||||
|
||||
Copyright (C)
|
||||
2026, Hermann Vosseler <Ichthyostega@web.de>
|
||||
|
||||
**Lumiera** is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version. See the file COPYING for further details.
|
||||
|
||||
* *****************************************************************/
|
||||
|
||||
/** @file nom-set-test.cpp
|
||||
** unit test \ref NomSet_test
|
||||
*/
|
||||
|
||||
|
||||
#include "test/run.hpp"
|
||||
//#include "test/test-helper.hpp"
|
||||
#include "lib/par/nom-set.hpp"
|
||||
#include "test/diagnostic-output.hpp"/////////////TODO
|
||||
|
||||
//#include <utility>
|
||||
//#include <string>
|
||||
//#include <vector>
|
||||
|
||||
//using std::string;
|
||||
//using std::vector;
|
||||
//using std::swap;
|
||||
|
||||
|
||||
namespace lib {
|
||||
namespace par {
|
||||
namespace test{
|
||||
|
||||
// using lumiera::error::LUMIERA_ERROR_LOGIC;
|
||||
|
||||
namespace {//Test fixture....
|
||||
|
||||
}//(End)Test fixture
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/********************************************************************************//**
|
||||
* @test document the definition of domain enumerations for nominal / ordinal scales.
|
||||
*/
|
||||
class NomSet_test : public Test
|
||||
{
|
||||
|
||||
virtual void
|
||||
run (Arg)
|
||||
{
|
||||
simpleUsage();
|
||||
verify_typeMarker();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
simpleUsage()
|
||||
{
|
||||
UNIMPLEMENTED ("nebbich");
|
||||
}
|
||||
|
||||
|
||||
/** @test
|
||||
* @todo WIP 9/26 🔁 define ⟶ implement
|
||||
*/
|
||||
void
|
||||
verify_typeMarker()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/** Register this test class... */
|
||||
LAUNCHER (NomSet_test, "unit lib");
|
||||
|
||||
|
||||
|
||||
}}} // namespace lib::par::test
|
||||
|
|
@ -82322,7 +82322,144 @@
|
|||
<node CREATED="1782951217451" ID="ID_1034096179" LINK="https://en.wikipedia.org/wiki/Level_of_measurement" MODIFIED="1782951247913" TEXT="Level of Measurement (Skalen-Niveau)">
|
||||
<node CREATED="1782951249606" ID="ID_286885318" MODIFIED="1782951257983" TEXT="oha ... da gib es so einige Untiefen!!"/>
|
||||
<node CREATED="1782951258983" ID="ID_1297628279" MODIFIED="1782951278292" TEXT="die Skalen-Niveus nach Stevens sind zwar weitverbreitet"/>
|
||||
<node CREATED="1782951279208" ID="ID_854829576" LINK="https://en.wikipedia.org/wiki/Level_of_measurement#Chrisman's_typology_(1998)" MODIFIED="1782951313007" TEXT="aber offensichtlich nicht ausreichend und erschöpfend"/>
|
||||
<node CREATED="1782951279208" ID="ID_854829576" LINK="https://en.wikipedia.org/wiki/Level_of_measurement#Chrisman's_typology_(1998)" MODIFIED="1782951313007" TEXT="aber offensichtlich nicht ausreichend und erschöpfend">
|
||||
<node CREATED="1788900130316" ID="ID_1794400222" LINK="https://www.researchgate.net/profile/Nicholas-Chrisman/publication/250016043_Rethinking_Levels_of_Measurement_for_Cartography/links/5a6a06e2a6fdccf88497c090/Rethinking-Levels-of-Measurement-for-Cartography.pdf?_tp=eyJjb250ZXh0Ijp7ImZpcnN0UGFnZSI6InB1YmxpY2F0aW9uIiwicGFnZSI6InB1YmxpY2F0aW9uIn19" MODIFIED="1788906073584" TEXT="Chrisman's Topology enthält hier relevante Skalen-Arten">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<h2>
|
||||
Expanded list of levels of measurement
|
||||
</h2>
|
||||
<p>
|
||||
Source: <a href="https://www.researchgate.net/publication/250016043_Rethinking_Levels_of_Measurement_for_Cartography">Nicholas C. Chrisman: Rethinking Levels of Measurement for Cartography (1998)</a><br />file:///Lager/Halde/Infoschrott/Texte/notiert/Rethinking levels of measurement for cartography | Nicholas R.Chrisman - Cartography and GIS, vol-25 p-231.1998.pdf
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Level of measurement
|
||||
</th>
|
||||
<th>
|
||||
Information required
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Nominal
|
||||
</td>
|
||||
<td>
|
||||
definitions of categories
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Graded membership
|
||||
</td>
|
||||
<td>
|
||||
<ul>
|
||||
<li>
|
||||
definition of categories
|
||||
</li>
|
||||
<li>
|
||||
plus degree of membership
|
||||
</li>
|
||||
<li>
|
||||
or distance from prototype
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Ordinal
|
||||
</td>
|
||||
<td>
|
||||
definitions of categories plus ordering
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Interval
|
||||
</td>
|
||||
<td>
|
||||
unit of measure plus zero point
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Log-interval
|
||||
</td>
|
||||
<td>
|
||||
exponent to define intervals
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Extensive
|
||||
</td>
|
||||
<td>
|
||||
ratio unit of measure<br /><i>(additive rule applies)</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Cyclic
|
||||
</td>
|
||||
<td>
|
||||
ratio unit of measure plus length of cycle
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Derived
|
||||
</td>
|
||||
<td>
|
||||
ratio unit of measures<br /><i>(formula of combination)</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Counts
|
||||
</td>
|
||||
<td>
|
||||
definition of objects counted
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Absolute
|
||||
</td>
|
||||
<td>
|
||||
type<br /><i>(probability, proportion, etc.)</i>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1788900156701" ID="ID_58657220" MODIFIED="1788900170890" TEXT="im Besonderen: die zyklische Skala">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1788900178434" ID="ID_792919762" MODIFIED="1788900555619" TEXT="dennoch nicht zielführend">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
alle diese Skalen-Arten sind auf die Perspektive einer Messung / Beobachtung und wissenschaftlichen Deskription festgelegt; diesen Ansatz halte ich für zu eng — einen entscheidenden Hinweis gibt mir hier die Existenz Verktor-wertiger Funktionen ⟹ generell können wir mehr als nur ein »zahlenwert-artiges« Objekt haben ⟹ ich weite sofort auf die dahinter liegende Domain-Ontology aus. Jeder Ansatz einer universellen Klassifikation aller Parameter-Typen ist von Vornherein zum Scheitern verurteilt, denn man muß immer etwas über die dahinterliegende Bedeutung wissen...
|
||||
</p>
|
||||
<p>
|
||||
Was wir hier höchstens erzielen können ist eine Standard-Codierung strukturierter Daten, deren Interpretation dann Hilfestellung benötigt durch Domain-spezifische Erweiterungen.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<arrowlink COLOR="#cb051e" DESTINATION="ID_1110588547" ENDARROW="Default" ENDINCLINATION="-864;32;" ID="Arrow_ID_1562316330" STARTARROW="None" STARTINCLINATION="506;47;"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1782951618754" ID="ID_138669286" LINK="https://en.wikipedia.org/wiki/Level_of_measurement#Scale_types_and_Stevens's_%22operational_theory_of_measurement%22" MODIFIED="1782951638340" TEXT="Beachte: Steven's operational theory of measurement">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
|
|
@ -82394,8 +82531,9 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#ffcea1" CREATED="1782948792629" ID="ID_1623866120" MODIFIED="1784583297397" TEXT="a Parameter has...">
|
||||
<node BACKGROUND_COLOR="#ffcea1" CREATED="1782948792629" ID="ID_1623866120" MODIFIED="1788902387436" TEXT="a Parameter has...">
|
||||
<cloud COLOR="#e8ceb0"/>
|
||||
<linktarget COLOR="#911122" DESTINATION="ID_1623866120" ENDARROW="Default" ENDINCLINATION="-2555;330;" ID="Arrow_ID_354302725" SOURCE="ID_631494622" STARTARROW="None" STARTINCLINATION="-1060;48;"/>
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1782948801636" ID="ID_224051194" MODIFIED="1783012188400" TEXT=" a Disposition"/>
|
||||
<node CREATED="1783012199995" ID="ID_1245050792" MODIFIED="1783012219836" TEXT="which comprises">
|
||||
|
|
@ -84175,10 +84313,12 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1788020186954" ID="ID_563253424" MODIFIED="1788020192598" TEXT="Interfaces...?">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1788020186954" ID="ID_563253424" MODIFIED="1788897140024" TEXT="Interfaces...?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1788020250782" ID="ID_726206772" MODIFIED="1788020252329" TEXT="Domain">
|
||||
<node CREATED="1788020256597" ID="ID_1943514908" MODIFIED="1788020278702" TEXT="applyLimit(valBuff&) ⟵ vmtl intern benötigt"/>
|
||||
<node CREATED="1788020256597" ID="ID_1943514908" MODIFIED="1788915158752" TEXT="applyLimit(valBuff&) ⟵ zentral zur Anwendung der Scale">
|
||||
<arrowlink COLOR="#66299e" DESTINATION="ID_1913361537" ENDARROW="Default" ENDINCLINATION="-1137;-2314;" ID="Arrow_ID_1874303468" STARTARROW="None" STARTINCLINATION="-226;-24;"/>
|
||||
</node>
|
||||
<node CREATED="1788020280703" ID="ID_1717784207" MODIFIED="1788020294892" TEXT="transferTo ⟵ generische Zuweisung"/>
|
||||
<node CREATED="1788020295960" ID="ID_903585085" MODIFIED="1788020320225" TEXT="TypeHandler<TY> ⟵ direkter Zugriff bei bekanntem Buffer_Typ"/>
|
||||
</node>
|
||||
|
|
@ -84298,6 +84438,10 @@
|
|||
<node CREATED="1788043898418" ID="ID_689257489" MODIFIED="1788043954080" TEXT="connect (Provision&)"/>
|
||||
<node CREATED="1788043962843" ID="ID_518209677" MODIFIED="1788043966310" TEXT="disconnnect();"/>
|
||||
</node>
|
||||
<node CREATED="1788897053027" ID="ID_1066486545" MODIFIED="1788897128624" TEXT="Einsicht: das ist das »elementare Konzept« eines Parameters">
|
||||
<arrowlink COLOR="#fdfdbe" DESTINATION="ID_1963209378" ENDARROW="Default" ENDINCLINATION="-519;-30;" ID="Arrow_ID_1285406437" STARTARROW="None" STARTINCLINATION="1049;46;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -84582,7 +84726,8 @@
|
|||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1788217133940" ID="ID_1963209378" MODIFIED="1788217153881" TEXT="das könnte das Basis-Interface für alles werden">
|
||||
<node CREATED="1788217133940" ID="ID_1963209378" MODIFIED="1788897121624" TEXT="das könnte das Basis-Interface für alles werden">
|
||||
<linktarget COLOR="#fdfdbe" DESTINATION="ID_1963209378" ENDARROW="Default" ENDINCLINATION="-519;-30;" ID="Arrow_ID_1285406437" SOURCE="ID_1066486545" STARTARROW="None" STARTINCLINATION="1049;46;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1788217155932" ID="ID_1701900965" MODIFIED="1788217167793" TEXT="es ist »a parameter in a nutshell«">
|
||||
<node CREATED="1788217177034" ID="ID_63305825" MODIFIED="1788217183394" TEXT="kann Wert lesen / setzen"/>
|
||||
|
|
@ -84677,7 +84822,7 @@
|
|||
</html></richcontent>
|
||||
<arrowlink COLOR="#ffd5f2" DESTINATION="ID_632634612" ENDARROW="Default" ENDINCLINATION="140;-422;" ID="Arrow_ID_423990415" STARTARROW="None" STARTINCLINATION="-499;24;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1788308332698" ID="ID_1468282295" MODIFIED="1788446452242" TEXT="Problem: brauche hier die BaseDomain-ID ohne Indirektion">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1788308332698" FOLDED="true" ID="ID_1468282295" MODIFIED="1788896870129" TEXT="Problem: brauche hier die BaseDomain-ID ohne Indirektion">
|
||||
<linktarget COLOR="#7a6a8b" DESTINATION="ID_1468282295" ENDARROW="Default" ENDINCLINATION="116;-139;" ID="Arrow_ID_582693889" SOURCE="ID_1881580962" STARTARROW="None" STARTINCLINATION="220;17;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1788362693945" ID="ID_1951653761" MODIFIED="1788362711453" TEXT="sonst »relativiert« sich der Direkt-Zugriff">
|
||||
|
|
@ -84805,7 +84950,7 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1788446454529" ID="ID_76117206" MODIFIED="1788569958698" TEXT="Problem: will direkt auf den Storage-Puffer zugreifen">
|
||||
<node COLOR="#435e98" CREATED="1788446454529" FOLDED="true" ID="ID_76117206" MODIFIED="1788896868112" TEXT="Problem: will direkt auf den Storage-Puffer zugreifen">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1788446483907" ID="ID_1788714028" MODIFIED="1788569974144" TEXT="das ist auf mehreren Ebenen problematisch">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
|
|
@ -85036,9 +85181,9 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1788367103969" ID="ID_1551239755" MODIFIED="1788570752166" TEXT="innere Widersprüche werden deutlich">
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1788367103969" ID="ID_1551239755" MODIFIED="1788913727622" TEXT="innere Widersprüche werden deutlich">
|
||||
<linktarget COLOR="#fe2680" DESTINATION="ID_1551239755" ENDARROW="Default" ENDINCLINATION="191;-241;" ID="Arrow_ID_1230826257" SOURCE="ID_137382885" STARTARROW="None" STARTINCLINATION="-740;0;"/>
|
||||
<linktarget COLOR="#b12b46" DESTINATION="ID_1551239755" ENDARROW="Default" ENDINCLINATION="-150;153;" ID="Arrow_ID_1196555634" SOURCE="ID_1620190650" STARTARROW="None" STARTINCLINATION="76;8;"/>
|
||||
<linktarget COLOR="#b12b46" DESTINATION="ID_1551239755" ENDARROW="Default" ENDINCLINATION="-213;222;" ID="Arrow_ID_1196555634" SOURCE="ID_1620190650" STARTARROW="None" STARTINCLINATION="76;8;"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1788367171639" ID="ID_632634612" MODIFIED="1788446239784" TEXT="ich will zugleich zwei Extreme">
|
||||
<linktarget COLOR="#ffd5f2" DESTINATION="ID_632634612" ENDARROW="Default" ENDINCLINATION="140;-422;" ID="Arrow_ID_423990415" SOURCE="ID_72188841" STARTARROW="None" STARTINCLINATION="-499;24;"/>
|
||||
|
|
@ -85184,6 +85329,308 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1788897224786" HGAP="33" ID="ID_394337664" MODIFIED="1788897243128" TEXT="Erweiterung anlegen: Scale-Konfiguration" VSHIFT="4">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1788897245579" ID="ID_435216261" MODIFIED="1788897700193" TEXT="erwarte hier in Zukunft erhebliche Komplexitäten">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Und zwar weil ich im Sinne flexibler Domain-Ontologien denke ⟶ wir brauchen »strukturierte Typen« (algebraische Datentypen) sowie diskrete symbolische Skalen, Summen- und Produkttypen. Die <i>erheblichen Komplexitäten</i> entstehen erwartungsgemäß dadurch, daß man das System dieser Skalen nicht a priori festlegen kann (denn dann hätte man sich implizit auf eine Domain-Ontologie festgelegt). Die Konsequenz ist, daß wir Skalen- und Strukturdefinitionen dynamisch, zur Laufzeit hinzufügen bzw. auf Projekt-Ebene festlegen müssen....
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<node CREATED="1788897701794" ID="ID_425709094" MODIFIED="1788898085454" TEXT="es wird so etwas wie ein »Schema« geben müssen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...das heißt, eine ebenfalls durch strukturierte Daten vorgegebene Konfiguration möglicher Strukturen, einschließlich der Typ-IDs.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1788897715361" ID="ID_908037710" MODIFIED="1788898031718" TEXT="welches dann die Möglichkeit einer Codierung eröffnet">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...letztlich werden diese strukturierten Parameter und Daten immer in Form eines algebraischen Datentyps darstellbar sein, wobei allerdings die »Bedeutung« aus dem Schema mit herangezogen werden muß; genauer gesagt, die Semantik kann nur innerhalb einer im Hintergrund vorausgesetzten Domain-Ontologie formal definiert werden und dann in eine Codierung übersetzt — insofern die Domain-Ontologien <i>offen bleiben müssen,</i> sehe ich nur den Weg, bestimmte Arten von Anfragen jeweils in die Implementierung auf Basis einer Domain-Ontologie zu delegieren (konkret: in ein Plug-in, welches auf der Domain-Ontology aufbaut). Die insgesamt möglichen Arten von Anfragen, zusammen mit der jeweiligen Codierungs-Regel, ergibt zusammen das effektive Schema, welches formale Transformationen und manipulationen der Daten ermöglicht
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1788900478144" ID="ID_1110588547" MODIFIED="1788900555619" TEXT="hier tut sich wieder das Problem der vorschnellen Univeral-Klassifikation auf">
|
||||
<linktarget COLOR="#cb051e" DESTINATION="ID_1110588547" ENDARROW="Default" ENDINCLINATION="-864;32;" ID="Arrow_ID_1562316330" SOURCE="ID_792919762" STARTARROW="None" STARTINCLINATION="506;47;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1788897260383" ID="ID_806222537" MODIFIED="1788914749127" TEXT="im ersten Schritt jedoch »einfach«">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1788897268719" ID="ID_1742479107" MODIFIED="1788898332115" TEXT="Einschränkung des Wertebereichs innerhalb der Domain">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Die Domain selber gibt den Basis-Datentyp vor; innerhalb dessen gibt es einen minimalen und maximalen Wert
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1788897282565" ID="ID_340739677" MODIFIED="1788898377781" TEXT="einen Marker/Tag für die Metrik">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Im Grunde geht es hier um die Unterscheidung ob »linear«, »logarithmisch« oder »diskret«
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1788903390090" ID="ID_539998292" MODIFIED="1788903396165" TEXT="die Frage ist: wie einfach?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1788903398641" ID="ID_222998203" MODIFIED="1788903455511" TEXT="beachte hier die Abgrenzung zum ParamSet">
|
||||
<arrowlink COLOR="#565978" DESTINATION="ID_788143596" ENDARROW="Default" ENDINCLINATION="446;-1047;" ID="Arrow_ID_1753071560" STARTARROW="None" STARTINCLINATION="-558;35;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1788903458209" ID="ID_960483578" MODIFIED="1788903482194" TEXT="alles was mehr als »zahlenwert-haft« ist wäre demnach ein ParamSet"/>
|
||||
<node CREATED="1788903496028" ID="ID_976954101" MODIFIED="1788903521237" TEXT="denn »praktisch immer« ist eine Codierung als »strukturierte Daten« möglich"/>
|
||||
<node CREATED="1788903661878" ID="ID_810674144" MODIFIED="1788903696013" TEXT="allerdings für einige sehr relevante Fälle wäre das »Overkill«"/>
|
||||
</node>
|
||||
<node CREATED="1788903780764" ID="ID_1847778801" MODIFIED="1788903792040" TEXT="das Problem der »Sentinel«-Werte">
|
||||
<node CREATED="1788903795004" ID="ID_667777780" MODIFIED="1788903809284" TEXT="Randfälle werden gemeinhin als spezielle Zahlenwerte markiert"/>
|
||||
<node CREATED="1788903812798" ID="ID_1558113120" MODIFIED="1788903856765" TEXT="klassisches Beispiel ist der IEEE-Float (NaN, ±Inf, Denormal)"/>
|
||||
<node CREATED="1788903901070" ID="ID_33994468" MODIFIED="1788904064699" TEXT="effektiv bedeutet das: eine integrierte Nominal-Skala mit Fallunterscheidung">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
wenn man dieses Muster streng nach den Regeln modelliert, dann wäre das ein algebraischer Datentyp mit einem Spezialfall-ENUM (Nominalskala), plus dem eigentlichen Zahlenwert, der aber nur bei bestimmten Nominal-Markern überhaupt betrachtet werden darf — also auch noch das Verhalten eines Summentyps
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1788904066159" ID="ID_1394892717" MODIFIED="1788904309527">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
die prinzipiell-korrekte Modellierung wäre aber eine <i>Verfehlung der Aufgabe</i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Denn letztlich geht es darum, ein Zahlenwert-artiges, einfaches, unstrukturietes Objekt weiterzugeben und zu manipulieren — und zwar hinreichend effizient für den Rahmen von High-Performance-Code (heißt: nicht in der innersten Schleife, aber direkt daneben). Weder ist die Programmiersprache dafür gerüstet, algebraische Datentypen in diesem Kontext zu verarbeiten, noch sind die entsprechenden Mechanismen performant genug, um mit dem einfachen Normalfall einer »Zahl« mithalten zu können. Eine Modellierung dieses Musters als algebraischer Datentyp würde als unangemessene Prinzipienreiterei gewertet; das heißt, man muß schon verstehen, worauf es ankommt
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1788904412352" ID="ID_1436845505" MODIFIED="1788904424447" TEXT="ein ähnliches Verdikt gilt für zyklische Werte"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1788912980176" ID="ID_320664672" MODIFIED="1788913437098" TEXT="Beschluß: geläufige Sonderfälle explizit mit aufnehmen">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1788913085119" ID="ID_321653591" MODIFIED="1788913092162" TEXT="Zahlenwert-artige Skalen"/>
|
||||
<node CREATED="1788913092842" ID="ID_183664407" MODIFIED="1788913099119" TEXT="Nominal- und Ordinalskalen"/>
|
||||
<node CREATED="1788913108257" ID="ID_1978508484" MODIFIED="1788913129045" TEXT="sinnvolle Typisierung der Domäne"/>
|
||||
<node CREATED="1788913235538" ID="ID_1938858556" MODIFIED="1788913242333" TEXT="Klassifikation der Metrik"/>
|
||||
<node CREATED="1788918860534" ID="ID_1509977565" MODIFIED="1788918873592" TEXT="optionale Quantisierung">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1788919824772" HGAP="50" ID="ID_1304551002" MODIFIED="1788920186012" TEXT="ein sehr komplexes Thema — Zusammenhang mit Zeit-Entitäten unklar" VSHIFT="1">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Das hier ist wirklich eine partielle thematische Überschneidung; denn Quantisierung ist auch unabhängig von Zeitangaben sehr relevant für Parameter, denn es kann alle möglichen Arten von Grids geben, und auch der Rundungs- bzw. Quantisierungsmechanismus könnte variabel sein. Die <i>eigentliche Design-Frage</i> jedoch ist, ob das auf dieser Ebene dargestellt werden muß, oder ob man das Thema komplett in die Automations-Provision hineinnimmt. Dafür, das Thema hier mit einer generischen Schnittstelle zu bedenken, würde eine Betrachtung sprechen, welche die »Parameter« als eine Codierungs-Basis versteht, deren Bedeutung durch ein Schema und eine dahinter liegende Ontologie festgelegt wird
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<arrowlink COLOR="#ea5e5f" DESTINATION="ID_768555857" ENDARROW="Default" ENDINCLINATION="2799;0;" ID="Arrow_ID_1670650996" STARTARROW="None" STARTINCLINATION="980;41;"/>
|
||||
<font NAME="SansSerif" SIZE="11"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1788913390558" ID="ID_1918141314" MODIFIED="1788913424326" TEXT="optionale Wertgrenzen"/>
|
||||
<node CREATED="1788913268654" ID="ID_743833460" MODIFIED="1788913275425" TEXT="optionaler Neutralwert"/>
|
||||
<node CREATED="1788913312056" ID="ID_919694201" MODIFIED="1788913316917" TEXT="optionaler Defaultwert"/>
|
||||
<node CREATED="1788913243384" ID="ID_217085587" MODIFIED="1788913345205" TEXT="optionale »Sentinels«"/>
|
||||
<node CREATED="1788913324214" ID="ID_1114697487" MODIFIED="1788913329534" TEXT="optionale Zyklizität"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1788914733259" ID="ID_1024480560" MODIFIED="1788914744874" TEXT="Funktionalität definieren">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1788914766575" ID="ID_1913361537" MODIFIED="1788915158752" TEXT="Unterstützung der Domain-Operationen">
|
||||
<linktarget COLOR="#66299e" DESTINATION="ID_1913361537" ENDARROW="Default" ENDINCLINATION="-1137;-2314;" ID="Arrow_ID_1874303468" SOURCE="ID_1943514908" STARTARROW="None" STARTINCLINATION="-226;-24;"/>
|
||||
<node CREATED="1788915235881" ID="ID_1781182087" MODIFIED="1788915260680" TEXT="hier muß die Domain::applyLimit() speziell (delegierend) implementiert werden"/>
|
||||
<node CREATED="1788915261413" ID="ID_13399317" MODIFIED="1788915458135">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
zudem: muß sicherstellen daß <b>jede zuweisende Operation</b>  diese Methode anwendet
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Der Knackpunkt dabei sind die TypeHandler-Implementierungen, denn diese verwenden zunächst (nur) das lokal implementierte generische preClamp (was die Grenzen der BaseDomain durchsetzt und Bool-werte per Schwelle bildet)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<node CREATED="1788915458123" ID="ID_257415193" MODIFIED="1788915772087" TEXT="TypeHandler kann man direkt anwenden (per Domain-Interface)">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
TypeHandler bezieht sich aber auf einen explizit und separat gegebenen Buffer, und konditioniert diesen nur im Hinblick auf den direkt spezifizierten Basis-Typ — wiewohl hier durchaus eine Unschärfe im Aufbau der Interfaces vorliegt, da ja in der <font face="Monospaced">conform()</font> - Operation schon ein impliziter »Typ« angewendet wird, dessen Bedeutung nicht zweifelsfrei klar ist (man könnte geneigt sein, hier schon den vollständigen Parameter-Typ zu vermuten)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1788915466090" ID="ID_704868487" MODIFIED="1788915846239" TEXT="aber relevant sind nur Operationen die den Parameter-Buffer berühren">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...denn es geht um die Durchsetzung einer Invariante für alle Werte »im« Parameter: sie müssen stets zum Parameter-Typ konform sein
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1788915850279" ID="ID_66483155" MODIFIED="1788915926006" TEXT="⟹ das betrifft also die Anwendung des Provision-Interfaces (auch dynamisch)">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...also jeweils wenn man sich <i>einen Wert holt,</i> was auch den »pull« der Automationsfunktion einschließt
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1788915959367" ID="ID_1848292303" MODIFIED="1788915969243" TEXT="Anforderung">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1788915971055" ID="ID_1166449203" MODIFIED="1788915983438" TEXT="gegeben ein beliebiger Wert der Base-Domain"/>
|
||||
<node CREATED="1788915984439" ID="ID_1687814760" MODIFIED="1788915994071" TEXT="diesen mit der Scale konform machen"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1788916016718" ID="ID_423001819" MODIFIED="1788917735339" TEXT="grundsätzlich kann das scheitern">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...was aber als ein seltener Grenzfall zu betrachten ist, und normalerweise durch die übergeordnete Konfiguration ausgeschlossen werden soll. Für die geläufigen Szenarien gibt es zudem stets eine Regel, nach der konditioniert werden kann...
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
wenn es sich zumindest um eine Intervallskala handelt, dann wird auf Maximum / Minimum gekappt
|
||||
</li>
|
||||
<li>
|
||||
wenn es sich um eine Nominal / Ordinalskala handelt, und es einen Default-Wert gibt, dann wird dieser genommen
|
||||
</li>
|
||||
<li>
|
||||
wenn es ein »INVALID« - Sentinel gibt, dann wird dieses genommen
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
Somit bleiben eigentlich nur die Fälle einer speziellen Domain ohne Defaultwert — denn in diesem Fall gibt es keine übergeordnete Metrik, nach der <i>interpoliert</i> werden könnte, sondern ein Code, der nicht zur Skala gehört, ist ungültig und muß zurückgewiesen werden
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1788917794598" ID="ID_29123926" MODIFIED="1788917818108" TEXT="ValueChain">
|
||||
<node CREATED="1788917819659" ID="ID_1748818920" MODIFIED="1788917847680" TEXT="wird benötigt um die Automations-Provision auf einen Basis-Wert anzuwenden"/>
|
||||
<node CREATED="1788917877107" ID="ID_665324760" MODIFIED="1788918801557" TEXT="hängt ab...">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
hier muß ggfs. eine Logarithmus / Exponential-Konvertierung stattfinden, möglicherweise auch eine Quantisierung
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<node CREATED="1788917882892" ID="ID_52090158" MODIFIED="1788917894364" TEXT="von der Metrik des Ergebnis-Parameters"/>
|
||||
<node CREATED="1788917904223" ID="ID_1099728874" MODIFIED="1788917932855" TEXT="ggfs von einer abweichenden Scale der Automations-Provision"/>
|
||||
</node>
|
||||
<node CREATED="1788918491304" ID="ID_991615591" MODIFIED="1788918753513" TEXT="Beschluß: hier Heuristik — keine eigene Taxonomie">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Grundsätzlich soll hier im Bereich der Scale nur <i>eine Codierung</i>  gehandhabt werden — es besteht die Gefahr, doch noch „durch die Hintertür“ eine universelle Wert-Ontologie einzuführen.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
es wird die Metrik des Parameters und der Automations-Provision mit herangezogen
|
||||
</li>
|
||||
<li>
|
||||
ein optional vorhandener Neutralwert wird als Hinweis genommen: ein Neutralwert 1 ⟹ deutet auf einen multiplikativen Faktor hin
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1788134884746" ID="ID_195532610" MODIFIED="1788134888546" TEXT="Builder-Notation">
|
||||
<node CREATED="1788134893182" ID="ID_1219540786" MODIFIED="1788134948392" TEXT="naheliegend: statischer Einsteieg vom Parameter-Frontend">
|
||||
<node CREATED="1788134968239" ID="ID_217011834" MODIFIED="1788134998930" TEXT="Parameter::from(prototype).build()"/>
|
||||
|
|
@ -85252,6 +85699,9 @@
|
|||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1788896830329" ID="ID_355463973" MODIFIED="1788896840672" TEXT="Scale-Konfiguration ermöglichen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1788654131472" ID="ID_1807734347" MODIFIED="1788654185033" TEXT="Prototyp-Builder">
|
||||
<linktarget COLOR="#c6386b" DESTINATION="ID_1807734347" ENDARROW="Default" ENDINCLINATION="29;104;" ID="Arrow_ID_1712704888" SOURCE="ID_1439464964" STARTARROW="None" STARTINCLINATION="176;0;"/>
|
||||
|
|
@ -85283,6 +85733,20 @@
|
|||
</node>
|
||||
<node CREATED="1788657034330" ID="ID_60370643" MODIFIED="1788657050967" TEXT="⟹ muß zwingend irgendwo eine Delegate haben..."/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1788760078240" ID="ID_1283385725" MODIFIED="1788760097936" TEXT="alternativer Ansatz : Builder-Typ unterwegs schwenken">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1788760099677" ID="ID_1558756181" MODIFIED="1788760111067" TEXT="sobald etwas eingeführt wird, das numerisch ist, haben wir einen Typ"/>
|
||||
<node CREATED="1788760113459" ID="ID_207791984" MODIFIED="1788760128581" TEXT="für die Anwendung wird dann aber die implizite Typkonvertierung gemacht"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1788760129351" ID="ID_1496419993" MODIFIED="1788760155703" TEXT="offenes Problem: weitere Angaben die nicht typ-gebunden sind">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1788760157345" ID="ID_610381104" MODIFIED="1788760167589" TEXT="ggfs eine symbolische Spec einführen?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1788760169244" ID="ID_1529282231" MODIFIED="1788760182795" TEXT="wäre dann sinnvoll im Hinblick auf »finite domain«"/>
|
||||
<node CREATED="1788760183730" ID="ID_535406129" MODIFIED="1788760192498" TEXT="müßte eine Definitionssprache erfinden"/>
|
||||
<node CREATED="1788760193736" ID="ID_790320052" MODIFIED="1788760197204" TEXT="(und dann parsen)"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -85298,8 +85762,8 @@
|
|||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#b4010b" CREATED="1788570724013" ID="ID_1620190650" MODIFIED="1788570761069" TEXT="(Grenzen werden deutlich)">
|
||||
<arrowlink COLOR="#b12b46" DESTINATION="ID_1551239755" ENDARROW="Default" ENDINCLINATION="-150;153;" ID="Arrow_ID_1196555634" STARTARROW="None" STARTINCLINATION="76;8;"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#b4010b" CREATED="1788570724013" ID="ID_1620190650" MODIFIED="1788913727622" TEXT="(Grenzen werden deutlich)">
|
||||
<arrowlink COLOR="#b12b46" DESTINATION="ID_1551239755" ENDARROW="Default" ENDINCLINATION="-213;222;" ID="Arrow_ID_1196555634" STARTARROW="None" STARTINCLINATION="76;8;"/>
|
||||
<font NAME="SansSerif" SIZE="11"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -85451,6 +85915,34 @@
|
|||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1788919077662" ID="ID_768555857" MODIFIED="1788919903351" TEXT="wie gehen wir um mit Zeit-Entitäten als Parameterwerten?">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Da ist erst einmal das Problem daß hier eine separate Algebra definiert wurde; außerdem wird bei den Zeit-Entitäten auch eine Intention ausgedrückt (Offset, Duration, TimeSpan); und schließlich gilt es die Quantisierung und die Time-Codes zu beachten. Dieser Fall tritt <b>definitiv</b> auf und <b>ist sehr relevant</b>: es könnte einen animierbaren Delay geben, oder andere temporale Qualifikationen (Time-Trail, zeitliche Integration).
|
||||
</p>
|
||||
<p>
|
||||
Man könnte hier <i>grundsätzich zwei ganz verschiedene Wege beschreiten:</i>
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
man könnte die Basis-Typen erweitern und die Diskrepanzen auf Ebene der Typ-Handler abfangen
|
||||
</li>
|
||||
<li>
|
||||
denkbar wäre auch eine alternative Implementierung der Disposition (ParamData) notwendig, so daß man das Quantisierungs-Grid geeignet darstellen kann und u.U. sogar einen TimeSpan (zwei Datenwerte) noch in der Standard-Buffer-Storage unterbringt
|
||||
</li>
|
||||
<li>
|
||||
man könnte stattdessen solche Parameter in die Kategorie der »komplexen Parameter« einordnen, die ja durchaus sehr häufig sein werden (z.B Farbwerte sind Vektoren); demnach wäre eine Zeit-Entität eben auch ein komplexer Wert, der auch ein Grid bzw. einen Timecode-Quantisierer impliziert
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<linktarget COLOR="#ea5e5f" DESTINATION="ID_768555857" ENDARROW="Default" ENDINCLINATION="2799;0;" ID="Arrow_ID_1670650996" SOURCE="ID_1304551002" STARTARROW="None" STARTINCLINATION="980;41;"/>
|
||||
</node>
|
||||
<node CREATED="1784672259758" ID="ID_1765265570" MODIFIED="1784673727205" TEXT="wie gehen wir mit Produkttypen um (Vektoren, Farben)?">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
|
|
@ -85471,7 +85963,7 @@
|
|||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1784673142319" ID="ID_79827229" MODIFIED="1784673414046" TEXT="es könnte auf zwei Kategorien hinauslaufen: einfach vs komplex">
|
||||
<node CREATED="1784673142319" ID="ID_79827229" MODIFIED="1788902624981" TEXT="es könnte auf zwei Kategorien hinauslaufen: einfach vs komplex">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
|
|
@ -85480,6 +85972,108 @@
|
|||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<arrowlink COLOR="#a62805" DESTINATION="ID_1434101577" ENDARROW="Default" ENDINCLINATION="-159;0;" ID="Arrow_ID_1727630196" STARTARROW="None" STARTINCLINATION="-91;4;"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#c6afa7" COLOR="#521477" CREATED="1788901263420" ID="ID_364482853" MODIFIED="1788901314108" TEXT="Festlegungen(2026)">
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1788901323860" ID="ID_1434101577" MODIFIED="1788902624981" TEXT="Unterscheidung zwischen Parameter und ParamSet">
|
||||
<linktarget COLOR="#a62805" DESTINATION="ID_1434101577" ENDARROW="Default" ENDINCLINATION="-159;0;" ID="Arrow_ID_1727630196" SOURCE="ID_79827229" STARTARROW="None" STARTINCLINATION="-91;4;"/>
|
||||
<node CREATED="1788901343210" ID="ID_1149370530" MODIFIED="1788901371954" TEXT="Paramter ist einfach und Zahlenwert-haft"/>
|
||||
<node CREATED="1788901377213" ID="ID_788143596" MODIFIED="1788903455511" TEXT="ParamSet ist strukturiert">
|
||||
<linktarget COLOR="#565978" DESTINATION="ID_788143596" ENDARROW="Default" ENDINCLINATION="446;-1047;" ID="Arrow_ID_1753071560" SOURCE="ID_222998203" STARTARROW="None" STARTINCLINATION="-558;35;"/>
|
||||
<node CREATED="1788902655996" ID="ID_214848012" MODIFIED="1788902873096" TEXT="es soll »alles Andere« handhaben (Farben, Vektoren, Masken)">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Ganz ausdrücklich sollen hier auch komplex struktuierte Gebilde mit eingeschlossen sein, zu deren Interpretation eine Domain-Ontology mitwirken muß.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1788902746760" ID="ID_653627897" MODIFIED="1788903101267" TEXT="es wird per Continuation-Funktor zugegriffen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Ich versuche dem Drang zu widerstehen, hier <i>doch noch ein allgemeines Schema</i> anzulegen; vielmehr wird konsequent die Handhabung der Daten per Callback-Funktor in den Nutz-Kontext zurück deflektiert. Der einzige zulässige Mechanismus ist die Bildung von »Prototypen« — wobei dann an die Stelle der <font face="Monospaced" color="#522e2e">Scale</font> (des einfachen Parameters) hier ein <i>Schema</i>  tritt
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1788902766485" ID="ID_599153391" MODIFIED="1788903238329" TEXT="Daten-Storage ist »woanders«">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
das ParamSet-Objekt ist grundsätzlich nur ein front-End-Handle, das auf anderweitig <i>managed data</i> verweist.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1788902778804" ID="ID_382988116" MODIFIED="1788902784397" TEXT="future-work">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1788903241758" ID="ID_28313284" MODIFIED="1788903369448" TEXT="beide sind generisch verwandt">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Es ist sinnlos, beide unter einen gemeinsamen Typ zu subsumieren, aber der Schematismus für beide Fälle soll jeweils analog sein...
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
ein kopierbares front-End-Handle
|
||||
</li>
|
||||
<li>
|
||||
die Idee einer »Provision« mit Verknüpfbarkeit
|
||||
</li>
|
||||
<li>
|
||||
ein impliziter Typ welcher Query-Funktionen bereitstellt
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1788902285068" ID="ID_631494622" MODIFIED="1788902387436" TEXT="Begriffliche Ordnung: Disposition, Typ, Domain, Scale, Provision">
|
||||
<arrowlink COLOR="#911122" DESTINATION="ID_1623866120" ENDARROW="Default" ENDINCLINATION="-2555;330;" ID="Arrow_ID_354302725" STARTARROW="None" STARTINCLINATION="-1060;48;"/>
|
||||
</node>
|
||||
<node CREATED="1788902213790" ID="ID_762595565" MODIFIED="1788902222279" TEXT="grund-Idee ist die »Provision«">
|
||||
<node CREATED="1788902228267" ID="ID_1182731010" MODIFIED="1788902232461" TEXT="Zugriff auf einen Wert"/>
|
||||
<node CREATED="1788902233533" ID="ID_35725517" MODIFIED="1788902240669" TEXT="Zeit-abhängiger pull()"/>
|
||||
<node CREATED="1788902241346" ID="ID_223970749" MODIFIED="1788902246885" TEXT="Verschaltung mit einer Quelle"/>
|
||||
</node>
|
||||
<node CREATED="1788902190760" ID="ID_820570977" MODIFIED="1788902203659" TEXT="der Wert ist getypt und opaque">
|
||||
<node CREATED="1788902427946" ID="ID_1446859021" MODIFIED="1788902444362" TEXT="für den Zugriff liefert der Verwender die Typ-Information"/>
|
||||
<node CREATED="1788902445047" ID="ID_1698376937" MODIFIED="1788902555756" TEXT="es gibt einen optimierten Pfad (der implizit bleibt: bei Typ-Match)">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Grundsätzlich gibt die jeweilige Verwendung einen Typ vor, und in diesen Typ wird transparent konvertiert; wenn aber »rein zufällig« der geforderte Typ dem nativen Typ entspricht, dann wird der optimierte Code-Pfad getriggert und der Zugriff geht an jedweder Indirektion vorbei
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue