proto-wayic/script/doc.task - Documentation in rough + formal summary - XML syntactic hypertext ( § Design constraints § XML syntactic hypertext (XHTML) § Namespacing § HTML attribution § Waybit § Step § Grouping § Nesting of waybit elements § Referential jointing + operative context - a way declaration document ( § Design constraints § operation in the context of a way declaration document ──────────────────────────────────────────────────────────────────────────────────────────────────── Bitform referential jointer` < a form of (§) referential jointer - a bitform referential jointer is a waybit with a *join* attribute - constraints - the jointer has the same namespace as its referent subjoining waybit ( e.g. only a step jointer can refer to a subjoining step - the jointer has no content - a jointer name of ‘_same’ means “same as the subjoining waybit” - a jointer local name declared as ‘_same’ is to be presented to document viewers (e.g. in the Web interface) instead as the local name of the referent subjoining waybit * *previewTweak* attribute < way:previewTweak, namespace data:,wayscript - subjoint preview tweaker - not yet implemented - purpose - tweak a subjoint preview to better fit its viewed context - joints formed in different places often need minor adjustment of their subject previews to fit their different contexts - form way:previewTweak='/pattern/replacement/flags' - function - alters the subjoint preview by calling String.replace - with first parameter of pattern and flags - with second parameter of replacement ──────────────────────────────────────────────────────────────────────────────────────────────────── Bitnote` - an intracast extrasource note attached to a waybit + form - a Breccian point ( http://reluk.ca/project/proto-Breccia/ - its identifier equal to that of a waybit in a sibling file of equal base name + function - bitnote and waybit are part and parcel - for certain purposes, including waybit variation ( http://reluk.ca/project/proto-wayic/origins/variant_waybit - a bitnote is taken as part of its waybit, as though it were intrasource content - scattered tasks that ought to be pulled together in my waycast, rather than here - coding the presentation of the bitnote reference = editor presentation in proto-wayic/emacs = Web presentation in proto-wayic/read - *pre* notes ( proto-wayic.read = manually transform the *pre* notes existing in waycast to bitnote form = remove pre_note.css ──────────────────────────────────────────────────────────────────────────────────────────────────── Design constraints` = remove these hence to topical §§ [ ⤓ minimal + XML syntactic hypertext - the basic form of Wayscript is XML syntactic hypertext (XHTML) ( http://w3c.github.io/html/introduction.html#html-vs-xhtml ( http://w3c.github.io/html/infrastructure.html#xml ( http://w3c.github.io/html/xhtml.html ∴ hypertext ∵ the *waycast* is public ( http://reluk.ca/project/proto-waycast/constraints.xht#availability ∵ the premiere medium of *publication* today is the Web ∵ the basic script of the *Web* is hypertext ∴ XML syntax ∵ XML facilitates coping with proper Wayscript markup - these aspects of XML in particular: - namespacing - strict syntax and parsing - they facilitate: - defining the markup's elements and attributes - writing the markup - processing it at runtime + operation in the context of a way declaration document - Wayscript is properly interpreted only in the context of a way declaration document ──────────────────────────────────────────────────────────────────────────────────────────────────── Extended element referencing` - referring to a waysource element regardless of whether it has an *id* attribute + form ( [EBN] extended element reference = element identifier, [ ',', element-relative offset ] ; element identifier = ? XML Name, as per https://www.w3.org/TR/xml/#NT-Name ?; element-relative offset = ? XPath relative path expression, as per https://www.w3.org/TR/xpath-3/#id-relative-path-expressions ?; * embedded in a URI reference - the characters '[' and ']' of an XPath predicate need not be percent encoded when the reference is embedded in the path, query or fragment component of a URI reference ( Predicates within steps, https://www.w3.org/TR/xpath-3/#id-predicate ( Percent-encoding, https://tools.ietf.org/html/rfc3986#section-2.1 - this is a break with the IETF standard - but not with the WHATWG standard where these characters need be encoded only as part of the *userinfo percent-encode set* ( https://url.spec.whatwg.org/#percent-encoded-bytes - only in the authority component, that is * normal form = define this = task to implement in proto-wayic.emacs - fontifying the *element-relative offset* to distinguish it from the element identifier - for sake of clarity = task to implement in proto-wayic.read < cf. http://reluk.ca/project/proto-wayic/read/project.task § Extended element referencing ──────────────────────────────────────────────────────────────────────────────────────────────────── Grouping` - waybit elements nested in a group element, itself nested in a waybit element - example [ETO]

[ *group* element < way:group, namespace data:,wayscript - placement: child of waybit element - content + qualifying text < optional - to informally explain, describe or otherwise qualify the grouping - placement: leading child - typically a short phrase terminated by a colon - example including:

comprising:

- meaning - whole A has parts P and Q - whole B has parts P and Q only + one or more waybits - to form the members of the group ──────────────────────────────────────────────────────────────────────────────────────────────────── HTML attribution` - the HTML attribution inherent in Wayscript is standard except as noted here + *id* attribute < no namespace - its contraints are those of XML - tighter than plain HTML - why? to be on the safe side, pending cause for loosening - namely: - type: XML ID, unique within document ( https://www.w3.org/TR/xml/#sec-attribute-types - form: XML Name ( https://www.w3.org/TR/xml/#NT-Name + *href* attribute < no namespace, on *a* element only - either a URI, or a formally intracast reference ( http://reluk.ca/project/proto-wayic/cast/doc.task § Formally intracast reference - fragment form: in case of a waysource referent: extended element reference ( § Extended element referencing ──────────────────────────────────────────────────────────────────────────────────────────────────── Hyperform referential jointer` < a form of (§) referential jointer - a hyperform referential jointer is an HTML *a* element with a *join* attribute - constraint: the jointer has no *href* attribute ──────────────────────────────────────────────────────────────────────────────────────────────────── *join* attribute` < way:join, namespace data:,wayscript - placement - waybit or HTML *a* element - form ( [EBN], exclusive of equivalent variants allowed by XHTML join attribute = 'way:join="', subjoining waybit reference, '"' ; - function - forms a referential jointer ──────────────────────────────────────────────────────────────────────────────────────────────────── Level conjunction of elements` - one element in level conjunction with another ( see also § Nesting of elements + genealogical terms - the convention for both HTML and XML, thus also for Wayscript - example [ETO] Sibling Sibling ──────────────────────────────────────────────────────────────────────────────────────────────────── Name masking attribute` < way:nameMask, namespace data:,wayscript - placement - proper Wayscript element - except that a waybit must have a name that is either '_' (anonymous) or non-reserved - form ( [EBN], exclusive of equivalent variants allowed by XHTML name masking attribute = 'way:nameMask="', value, '"' ; value = ? one or more characters ?; - function - taking the attribute declarations in document order - for the attributed element and each descendant of the same qualified name - if *value* is 'unset' - disables its name mask - else - enables its name mask for *value* - where the name mask is enabled on an element - presents the element to document viewers as having a name of *value* ──────────────────────────────────────────────────────────────────────────────────────────────────── Namespacing` ( https://www.w3.org/TR/xml-names/ [ terms * para-namespace - a false namespace whose identifier preposes that of a true namespace (subnamespace) - as for instance 'foo.' preposes 'foo.bar' ( 'prepose' not 'prefix' which already has a different meaning in XML namespaces - an abstract category of namespaces - itself not a namespace, not usable in waysource - examples data:,wayscript. data:,wayscript.bit. * subnamespace - a true namespace that belongs to a para-namespace - whose identifier begins, in other words, with the identifier of the para-namespace - examples data:,wayscript.bit data:,wayscript.bit.step [ hierarchy - here is the namespace hierarchy of Wayscript proper - each namespace is identified together with its traditional, simple prefix (in brackets) +(way) data:,wayscript < top namespace * data:,wayscript. < top para-namespace, to which all proper Wayscript subnamespaces belong +(bit) data:,wayscript.bit < namespace of waybits proper, excluding namespaced subtypes such as steps * data:,wayscript.bit. < para-namespace of waybit subtypes, such as step +(step) data:,wayscript.bit.step < namespace of steps [ notation - descriptive conventions * sub-identifier - a partial identifier of a subnamespace - unique only within the context of a para-namespace - within that context - any subnamespace may be uniquely identified by a sub-identifier - which is formed by removing the preposing para-namespace identifier - examples of sub-identifiers bit bit.step step * top sub-identifier - a sub-identifier in the context of the top para-namespace (data:,wayscript.) - examples of top sub-identifiers bit bit.step * wild cards - multiple subnamespaces may be symbolized by a ‘*’ wild card appended to a para-namespace - examples - waybit namespaces data:,wayscript.bit* - waybit subnamespaces data:,wayscript.bit.* ──────────────────────────────────────────────────────────────────────────────────────────────────── Nesting of elements` - one element nested in another ( see also § Level conjunction of elements - terms + genealogical - the convention for both HTML and XML, thus also for Wayscript - examples [ETO] Parent Child Ancestor ⋱ Descendant + arborescent - examples [ETO] Root ⋱ Branch ⋱ Leaf Stem + coined * infrabut ( ./infrabut * suprabut ( ./suprabut - examples [ETO] Suprabutting Infrabutting ──────────────────────────────────────────────────────────────────────────────────────────────────── Nesting of waybit elements` - one waybit element nested in another - modelling a relation of causality or dependence between way parts - examples [ETO] * causality Effect Cause - meaning: A causes B * dependence Dependant - meaning: B depends on A ( one might attach the label ‘Dependency’ to A, but that would be non-standard English - taking ‘dependence’ in its original sense of down hanging - note that the nested form turns it upside down - visually B depends (hangs down) from A * logical dependence - viz. in the logical parts of a way Conclusion Premise - meaning: from A one infers B - practical dependence - viz. in the practical parts of a way * means-end End Means - meaning: B is attained by means of A * order condition ( from § Step Step 3 Step 2 Step 1 - meaning - step 3 must succeed step 2 - step 2 must succeed step 1 - quasi-dependence ( not an exhaustive listing - though not exactly dependence relations, these too are modelled by nesting * whole-part Whole Part * subject-predicate Subject Predicate - formal terms - referring to the empty form, implying no meaning * genealogical * arborescent * coined < all as per § Nesting of elements, q.v. * spatial Overbit ⋱ Element ⋱ Underbit ──────────────────────────────────────────────────────────────────────────────────────────────────── Referential jointer` ( ./referential_jointer - form, one of *§ Bitform referential jointer *§ Hyperform referential jointer - formation - *join* attribute - function - referential jointing - it declares a referential joint ──────────────────────────────────────────────────────────────────────────────────────────────────── Referential jointing` - making referential joints ( ./referential_joint - an alternative to direct junction by nested abutment ( cf. §§ Nesting of elements & Nesting of waybit elements [ purpose - two fold 1 modelling a single way with separately declared waybits 2 enabling a waybit (in effect) to nest at multiple places in the same model - such that multiple elements are parents of this waybit - their common child [ form - a joint is formed of two elements - a referrer - typically a (§) referential jointer - its referent - a waybit that would be valid as a subjoining waybit ( § Subjoining waybit § contraints - the mapping between jointers and joints entire is 1:1 - each jointer effectively declares a separate joint ( the same is not true of subjoining waybits, which map to joints 1:N - the joint is declared unidirectionally - from jointer to subjoining waybit - for sake of general simplicity and robustness - subordinate building blocks (e.g. underbits) can be implemented blind to the uses (overbits) they will be put in future - discourages unecessary overbit entanglements/assumptions that would tend to increase complexity and decrease robustness of the overall structure - a node (e.g. overbit) can fully define its own edges - no underbit being able to contradict the definition - which simplifies machine (and human) processing of the structure [ effect < way modelling - the effect of a referential joint on the way model is determined by definite, but hypothetical waysource changes (effective changes) - its effect is what the effective changes would introduce - effective changes of a referential joint: * any referential joint - the subjoining waybit gains a parent (effective parent) which is the parent of the jointer - in addition to its declared parent * bitform referential joint ( additional to the above - where it infrabuts the effective parent, the subjoining waybit: - takes the local name of the bitform jointer - which thereby masks (at this location) its declared local name - takes all attributes of the bitform jointer - which thereby extend and/or mask (at this location) its declared attributes - the bitform jointer is removed - in other words, the subjoining waybit (at this location) pretty much merges with the jointer < intercasting - intercast linkage ( [IR] [ causality and dependence relations - owing to how the effect of a referential joint is determined ( § Referential joint § effect - no referential joint can bring its subjoining waybit into a relation of causality in the role of effect - nor of dependence in the role of dependant - adding a nested waybit to a hyperform jointer (the only form that allows such addition) - thus bringing it into a relation of causality or dependence - would not bring the subjoining waybit into the same relation - the subjoining waybit (in gaining the same parent) becomes a *sibling* to the jointer ( § Referential joint § effect § effective changes of a referential joint - separate of the jointer and its content / [ looped referential jointing / - an edge case in which the subjoining waybit is an ancestor of the referrer / - formally allowed though not guaranteed to make sense // till I have a need to document this, and hopefully a practical example, or counter example ──────────────────────────────────────────────────────────────────────────────────────────────────── Step` < surtype: waybit - typology ( see also § Waybit § typology * step < data:,wayscript.bit.step* > * proper step < data:,wayscript.bit.step > - a model of a volitive way part - of a deliberate act as it contributes to the way - as with a procedural step or stage of a plan - nesting of step elements formalizes an order condition among the steps ( see also § Nesting of waybit elements - example [ETO] Step 3 Step 2 Step 1 - meaning - step 3 must succeed step 2 - step 2 must succeed step 1 - relative to each other, the steps must execute in the declared order - counter example Step 1 Step 2 Step 3 - meaning: steps 1, 2 and 3 are independent of each other - relative to each other, they may execute in any order ──────────────────────────────────────────────────────────────────────────────────────────────────── Subjoining waybit` ( ./subjoin - constraints ( the conditions of a subjoining waybit, which determine it as such - it is a waybit - it is the referent of a referential jointer - it has no *join* attribute - whereby it would serve also as a bitform referential jointer with a subjoining waybit of its own - whereby each of its jointers together with it and its subjoining waybit would form a double joint - a joint to a joint - disallowed - reasons - double jointing has no clear use case to justify its attendant complications - double jointing might over-constrain the presentation of the way model in practice - e.g. where an application would give to jointer and subjoining waybit distinct yet overlapping presentations that are difficult to combine in a single element ──────────────────────────────────────────────────────────────────────────────────────────────────── Subjoining waybit reference` * form ( [EBN] subjoining waybit reference = formally intracast reference with fragment ; ( formally intracast reference with fragment, http://reluk.ca/project/proto-wayic/cast/doc.task - formally intracast in compliance with design constraints ( http://reluk.ca/project/proto-wayic/cast/doc.task ( § Design constraints § relative referencing bounded by the waycast * resolution - the fragment is resolved as an extended element reference ──────────────────────────────────────────────────────────────────────────────────────────────────── Waybit` ( ./waybit - typology ( with namespacing < ⋯ > ( cf. § Namespacing § hierarchy * waybit < data:,wayscript.bit* > * proper waybit < data:,wayscript.bit > * step < data:,wayscript.bit.step* > * proper step < data:,wayscript.bit.step > - naming - the naming of waybits is free form except for certain reserved names ( § reserved names - a name of ‘_’ means no name (anonymous waybit) * purpose - the name helps the reader to understand the waybit - bringing out its meaning - the name serves as a placeholder for the waybit - standing in for the waybit - e.g. in collapsed or otherwise compressed views of the way model * reserved names - names beginning with an underscore ‘_’ are reserved - assign no such name unless instructed by a formal rule - publication * waybit public identifier ( form [EBN] waybit public identifier = waycast public identifier, dotless relative path, '#', extended element reference in normal form ; waycast public identifier = ? as per http://reluk.ca/project/proto-wayic/cast/doc.task § Publication of a waycast ?; dotless relative path = ? a relative path reference without a dot segment, as per https://tools.ietf.org/html/rfc3986#section-3.3 (dot-segment) and https://tools.ietf.org/html/rfc3986#section-4.2 (relative-path) ?; extended element reference in normal form = ? as per § Extended element referencing § form § normal form ?; //////////////////////////////////////////////////////////////////////////////////////////////////////// // N o t e s / [EBN] Extended Backus-Naur syntax notation, ISO/IEC 14977. ( http://standards.iso.org/ittf/PubliclyAvailableStandards/index.html ( https://www.cl.cam.ac.uk/~mgk25/iso-14977.pdf ( summary, https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form [ETO] End tags omitted. Here the XML end tags are omitted for sake of clarity. [IR] · Applies only for those instances which are formed using an import reference. ( http://reluk.ca/project/proto-wayic/intercast/doc.task Copyright © 2017-2019 Michael Allan and contributors. Licence MIT.