NOTE: The chapters in this document are ordered from highlevel to lowlevel (technical) as much as possible
definition | explanation |
---|---|
human | a sentient being who thinks fuzzy, absorbs, and shares thought (by plain text, not markuplanguage) |
scene | a (local/remote) 3D scene or 3D file (index.gltf e.g.) |
3D object | an object inside a scene characterized by vertex-, face- and customproperty data. |
metadata | custom properties of text, 3D Scene or Object(nodes), relevant to machines and a human minority (academics/developers) |
XR fragment | URI Fragment with spatial hints (#pos=0,0,0&t=1,100 e.g.) |
src | (HTML-piggybacked) metadata of a 3D object which instances content |
href | (HTML-piggybacked) metadata of a 3D object which links to content |
query | an URI Fragment-operator which queries object(s) from a scene (#q=cube) |
visual-meta | |
requestless metadata | opposite of networked metadata (RDF/HTML request-fanouts easily cause framerate-dropping, hence not used a lot in games). |
FPS | frames per second in spatial experiences (games,VR,AR e.g.), should be as high as possible |
introspective | inward sensemaking ("I feel this belongs to that") |
extrospective | outward sensemaking ("I'm fairly sure John is a person who lives in oklahoma") |
◻ | ascii representation of an 3D object/mesh |
"When a car breaks down, the ones without turbosupercharger are easier to fix"
fragment | type | example | info |
---|---|---|---|
#pos | vector3 | #pos=0.5,0,0 | positions camera to xyz-coord 0.5,0,0 |
#rot | vector3 | #rot=0,90,0 | rotates camera to xyz-coord 0.5,0,0 |
#t | vector2 | #t=500,1000 | sets animation-loop range between frame 500 and 1000 |
#...... | string | #.cubes #cube | object(s) of interest (fragment to object name or class mapping) |
xyz coordinates are similar to ones found in SVG Media Fragments
key | type | example (JSON) | info |
---|---|---|---|
name | string | "name": "cube" | available in all 3D fileformats & scenes |
class | string | "class": "cubes" | available through custom property in 3D fileformats |
href | string | "href": "b.gltf" | available through custom property in 3D fileformats |
src | string | "src": "#q=cube" | available through custom property in 3D fileformats |
NOTE: XR Fragments are file-agnostic, which means that the metadata exist in programmatic 3D scene(nodes) too.
Humans first, machines (AI) later.
The simplicity of appending BibTeX (humans first, machines later) is demonstrated by visual-meta in greater detail, and makes it perfect for GUI's to generate (bib)text later. Humans can still view/edit the metadata manually, by clicking 'toggle metadata' on the 'back' (contextmenu e.g.) of any XR text, anywhere anytime.
This significantly expands expressiveness and portability of human text, by postponing machine-concerns to the end of the human text in contrast to literal interweaving of content and markupsymbols (or extra network requests, webservices e.g.).
Applications are also free to attach any JSON(LD / RDF) to spatial objects using custom properties (but is not interpreted by this spec).
characteristic | Plain Text (with BibTeX) | RDF |
---|---|---|
perspective | introspective | extrospective |
space/scope | local | world |
everything is text (string) | yes | no |
leaves (dictated) text intact | yes | no |
markup language(s) | no (appendix) | ~4 different |
polyglot format | no | yes |
easy to copy/paste content+metadata | yes | depends |
easy to write/repair | yes | depends |
easy to parse | yes (fits on A4 paper) | depends |
infrastructure storage | selfcontained (plain text) | (semi)networked |
tagging | yes | yes |
freeform tagging/notes | yes | depends |
specialized file-type | no | yes |
copy-paste preserves metadata | yes | depends |
emoji | yes | depends |
predicates | free | pre-determined |
implementation/network overhead | no | depends |
used in (physical) books/PDF | yes (visual-meta) | no |
terse categoryless predicates | yes | no |
nested structures | no | yes |
To serve humans first, human 'fuzzy symbolical mind' comes first, and 'categorized typesafe RDF hive mind' ) later.
above can be used as a startingpoint for LLVM's to translate/steelman to any language.
*(*For example**: #q=.foo is a shorthand for #q=class:foo, which will select objects with custom property class:foo. Just a simple #q=cube will simply select an object named cube.
An example query-parser (which compiles to many languages) can be found here
Example: ://foo.com/my3d.gltf#pos=1,0,0&prio=-5&t=0,100
Demo | Explanation |
---|---|
pos=1,2,3 | vector/coordinate argument e.g. |
pos=1,2,3&rot=0,90,0&q=.foo | combinators |