G
A graph layout ontology in RDF would enable shipping an SVG to the client with the layout data (along with the graph data itself) embedded in RDFa.
Other
Design a Graph Layout Ontology.
R
[RESOLVED(ish)] The display is still goofed on a mobile screen.
Other
Solve for mobile.
S
Ship a front end with interfaces for IBIS, PM, and a rudimentary FOAF/ORG editor.
Has Broader
Ship a front end with interfaces for IBIS, PM, and a rudimentary FOAF/ORG editor.
Has Narrower
Alter the template so that the editing widgets do not show up unless there is a registered user detected.
Create a template for pm:Target.
Create a template for pm:Task.
Create ibis:endorsed-by relations widget, i.e. the ability to "like" an entity.
Improve the UI for ibis:Network and skos:ConceptScheme.
Replace the type toggle widget with an upgrade/downgrade widget in either type vertical.
Ship a front end with interfaces for IBIS, PM, and a rudimentary FOAF/ORG editor.
[DONE] Create a template for pm:Goal.
Other
Adjacent nodes in the left-side lozenge UI can be kind of ambiguous.
Client wants to use the IBIS tool (Sense Atlas) in everyday operations.
It would be handy if active entities could be easily visually differentiated from inactive ones.
Plan projects and resources with the use of the Process Model Ontology.
Represent networks of people and their organizational and/or institutional affiliations, as well as their products.
The UI for adding and connecting adjacents messes up in annoying and data-destructive ways.
The XSLT component kind of sucks.
The issue/position/argument type toggle widget is a vestige from the original 2013 prototype and never actually made any sense.
The template for ibis:Network (skos:ConceptScheme) is really shabby.
There is no upgrade/downgrade path to go from { issue ↔ argument ↔ goal ↔ target } or { position ↔ task }.
There is still no capability to use ibis:replaces effectively.
[RESOLVED] For writing to the graph, the IBIS tool requires a "focus" node with which to associate new entries. This is associated with a state object, which is in turn associated with the current user.
[RESOLVED] The editing widgets show up even if there is no current logged-in user.
[RESOLVED] The unlink button appears to be broken (again?) for ibis:suggested-by.
A bunch of useful RDF accessors have accumulated in the generic graph tool script.
A graph layout ontology in RDF would enable shipping an SVG to the client with the layout data (along with the graph data itself) embedded in RDFa.
About the only time Sense Atlas needs a full page refresh (and even then is debatable) is when a new entity is added through a semantic relation.
Add a log in/out widget to the footer (email and "go" button to log in, logout button to log out).
Add appropriate Cache-Control headers and enable caching on the reverse proxy wrapping Sense Atlas.
Add the graph accessor methods as a mix-in onto Store.
Add the namespace code to Store mix-in as well.
Adjacent nodes in the left-side lozenge UI can be kind of ambiguous.
All JavaScript particulars should be fully bootstrappable (and bootstrapped) from RDFa (and subsequent JSON-LD) data.
All of the instance data currently in the wild is easily accessible and can be manipulated with a single SPARQL query.
Almost all Web templating languages allow for broken markup (a major reason we're still using XSLT is because it doesn't).
Alter the template so that the editing widgets do not show up unless there is a registered user detected.
Always focus the network when you select it or create a new one.
An autofilled text box has an unlimited capacity and is easier to deal with than a dropdown when there are lots of entities.
An autofilled text box will take up less space.
An eyeball estimate actually suggests the link and backlink transforms (which each scan the document for RDFa) account for the majority of the time it takes to serve the `all-classes` resource.
Augment the operations over connections between entities (except for adding a brand new entity) and the subsequent update to the graph visualization to avoid a full server round trip.
Augment the remaining form controls that are neither the textareas nor the connections to update without a full round trip.
Autofilled text boxes are implemented inconsistently across browsers.
Automatically import the node; people can remove it later.
Automatically importing the entity may make sense for creating new networks but could make a mess with existing ones.
Change the main label on IBIS entities from rdf:value to skos:prefLabel and use e.g. skos:definition or dct:description or rdfs:comment for the longer text.
Changing the focus isn't really that big a deal and it can always be changed later.
Client wants to use the IBIS tool (Sense Atlas) in everyday operations.
Cluster the relationship properties into macro-groups and just assign one colour each: personal, professional, academic, antagonistic, incidental/ephemeral. Something like that.
Computing the layout on the server side will afford the generation of SVG (and raster derivatives) for clients (e.g. bots) that don't do client-side scripting.
Consider implementing markup transforms on top of SAX rather than DOM where possible.
Consider putting the entity's class in the initial path segment, e.g. /issue/.
Contact the authors of the relationship ontology and see if they'll accept a patch.
Could we establish that an argument is an argument purely by inference?
Create (and run) a SPARQL script that does the appropriate surgery to add the forward-links transform to the transform queue.
Create a "forward links" transform to attach residual links to opaque (e.g. static) documents, analogous to the backlinks transform.
Create a Namespace class as a subclass of NamedNode (also wrapped by a Proxy) that is transparent and has the old interface plus an accessor-based one.
Create a handler that generates an appropriate link preview graphic for IBIS entities.
Create a keyboard event handler that submits the form for all forms that only contain a datetime-local widget (as a non-hidden control).
Create a new <datalist> for autofilling foaf:Agent entities.
Create a one-off front page that promotes Sense Atlas and explains to people what they're looking at.
Create a pop-up "jump to entity"/"create new unconnected entity" interface.
Create a server-side XSLT transform.
Create a template for foaf:Person.
Create a template for gr:ProductOrService.
Create a template for org:Organization.
Create a template for pm:Target.
Create a template for pm:Task.
Create a template for sioct:AddressBook in lieu of a more appropriate collection type.
Create ibis:endorsed-by relations widget, i.e. the ability to "like" an entity.
Debugging XSLT 1.0 in particular is brutal, due to years of neglect from the browser vendors.
Design a Graph Layout Ontology.
Design a mechanism for offloading and/or paginating backlinks.
Despite being standard, reliable, and fast to execute, and built into every browser, XSLT 1.0 in particular is really clunky to work with.
Devise a radial clumping algorithm for determining the θ of each node.
Dispatching templates on the server side would afford getting rid of that clunky and ridiculous client-side dispatcher.
Do we always want to focus the new network?
Do we show the UI to focus the network if it's already focused?
Do we want to be able to ascribe a value to the goal specifically, rather than the target—which has a budget?
Double-check the behaviour of datetime-local in Chrome and Safari.
Dropdowns are easy to implement.
Dropdowns can get huge and unwieldy.
Dropdowns hide the available options behind a click.
Editable blocks would also afford elementary markup (bold, italic, monospace, inline links, &c).
Eliminate the need for the template to load (and thus trigger the generation of) every single concept scheme/issue network.
Establish a consistent architecture for organizing front-end JavaScript code that accounts for RDF(a, JSON-LD) and NPM modules.
Even once caching is implemented, a full server round-trip for the whole page with every POST is costly and often unnecessary.
Even ordinary page GETs when the graph state has not changed can be slow, particularly the first time a user loads a generated resource.
Expand the script that manages the adjacent entity controls so that it also attaches to the "agent" controls.
Extra buttons are potentially clutter.
Fix the backlinks transform so that it only produces non-redundant links, and only for the subject document and any fragments thereof.
Fix the bug in RDF::LMDB that is preventing the default graph from being selected.
From the entity UI, there is no mechanism for adding a new entity that is not attached to the current entity.
Get rid of the concept of "focus"; just make it so any new entity is added to all participating concept schemes/issue networks at once.
Getting rid of the clunky client-side dispatcher would also get rid of that giant RDF/XML file containing all the vocabs, which isn't used for anything else.
Google has, in fact, committed to eliminating support for XSLT.
Granular modification times would be a byproduct of a full transaction history.
How do we account for the dynamic elements on the page from the graph?
How do we match templates to resources?
How do we select the type of network to be created?
How do we yoke or group these entities together?
How do you get the users into the system?
If an entity is not immediately connected to the current one, you have to hunt through the visualization or go back to the scheme view to find it.
If every RDF class (and individual resource) that mattered could be assigned its own XSLT transform, then we could have sane defaults for unspecified classes.
If one of the browser vendors removed support for XSLT 1.0, we could move XSLT processing to the server side.
If we navigate to the overview of a network which is not in focus, how do we take focus?
Implement a JSON-LD variant for the catalogue index as well.
Implement internal caching.
Implement provisional JSON-LD variants for large resources (notably the catalogues) accessed through client-side scripting.
Implement the edge-uncrossing portion of the layout algorithm in a faster language (Rust?) that can be compiled to WASM.
Implement the network switcher as a an autofilling text box.
Implement the network switcher as a dropdown.
Importing nodes from one network to another is a pain in the ass.
Improve the UI for ibis:Network and skos:ConceptScheme.
Incidentally the crappy <textarea> elements are a total hangover from the original prototype when a JS-free fallback was still considered feasible.
Is an explicit focus actually necessary though? After using Sense Atlas fairly heavily for a month, it seems like it it isn't needed and just gets in the way.
Is the focus a property of the graph, or a property of the user state?
It is 100% the RDFa processor adding like ten seconds to the render time of some of those big pages.
It is currently difficult to answer the question, when looking at an issue network, "what still needs to be done?"
It is easy for certain classes of resources (e.g. foaf:Person) to accumulate a large number of backlinks (e.g. dct:creator).
It is wasteful to extract the graph data out of the RDFa in the document, throw it away, and then extract it again, as it moves through the transformation pipeline.
It turns out that (at least in Firefox) the `datetime-local` input does not let you set a valid ISO8601/W3CDTF time stamp, only a truncated one.
It turns out the Store already has some kind of prefix map but it apparently only contains strings as values, not Namespace factories.
It will often be quicker to bulk-import a bunch of nodes and then prune out any extraneous ones.
It would be handy if active entities could be easily visually differentiated from inactive ones.
It would be nice to have inline descriptions on IBIS entities for additional text.
It would be useful if people coming from outside Sense Atlas had a heads-up as to what they were clicking on.
It would be useful, from the keyboard, to be able to jump to an entity you know is in the graph but not immediately connected.
It would be valuable for people to be able to see the status of an IBIS/PM entity from a link preview.
It would be valuable to see the topological neighbourhood of a particular IBIS entity (i.e., is it central or is it in the weeds?)
It wouldn't hurt to slice off some of the URL path real estate for certain designated classes (and put the respective catalogues at those addresses).
It's okay to reconcile with SDO terms but don't use them for authoritative representations of data.
It's possible that more than one individual property can accumulate enough backlinks to cross the pagination barrier, confounding a global window parameter.
JSON-LD is invariably much cheaper to generate than e.g. (X)HTML+RDFa.
Keep the focus button and disable it, and change the text to say "Focused".
Make a field in the UI for (re)setting the network's name.
Make a toggle for whether the node should be included.
Make a unified UI for switching and/or creating new IBIS networks, SKOS concept schemes.
Make an addressable transform of the form `;backlinks=property,window-start,window-end` —one for each property (that runs long).
Make it possible to import all of a node's neighbours as well.
Make it possible to query the RDF store for the modification times of specific resources and/or statements.
Make some UI that affords creating a new IBIS network (or SKOS concept scheme) from an entity or network overview.
Make some UI that affords switching IBIS networks.
Make sure the UI has a "Set Focus" button.
Manipulating the properties of the entity itself would be easy enough, but altering the connections entails updating both the layout and the graph.
Markup transforms that have to parse a lot of input and/or generate a lot of output (e.g. backlinks) will necessarily be slower.
Maybe the user just wants to look at the other network (or create one and not switch to it).
Modify the content inventory vocab to include a new class and properties to represent a template.
Modify the transform that inserts XSLT processing instructions to match against asserted types (or specific resources).
Most (if not all?) of the changes that cause full-page round trips could be supplanted by AJAX (or whatever it's called these days).
Move the generation of <datalist> elements, which only get used by JavaScript anyway, from the template to JS, so it can take advantage of the JSON-LD variants.
Narrowing the search of existing node by type makes it harder to search for existing nodes to connect.
No, remove the set focus button if the network in question is already focused.
No, stay where you are. Use a dedicated "Go" button to navigate.
Note that an entity can be an ibis:Argument and an pm:Goal/Task at the same time.
Only show the nodes in an unfocused network that are immediately adjacent to the ones in the focused network (and do so at half opacity), like is already done with skos:Concept.
Override form POST actions with scripting.
Part of the reason for client-side template processing is to shift the cost of computing templates to the user, who (usually) has ample such resources to spare.
Perhaps the ridiculous distances (r) between nodes will resolve itself if the ridiculous radial distance (θ) is fixed.
Plan projects and resources with the use of the Process Model Ontology.
Police d3-dag for any obvious implementation flaws that can be optimized out.
Precomputing the graph visualization layout will need some kind of intermediate representation.
Preemptively compute the Sugiyama layout on the server side (asynchronously, of course) when the subgraph in question is changed, which can be cached and shipped out whole over the wire.
Put a link in the footer back to the "top".
Put the RDF accessors in a Store subclass.
Put the RDF accessors in the RDFViz class.
Put the type icons in the adjacent node elements.
Putting the custom accessors into RDFViz is simpler than trying to stitch them into the graph class.
Radio buttons are just as easy to implement (over a small, fixed set of elements) as dropdowns.
Refactor the JS such the generic parts are separated from the Sugiyama (and/or ontology-)specific code.
Replace the <textarea> elements with editable paragraphs for a quick (?) win.
Replace the type toggle widget with an upgrade/downgrade widget in either type vertical.
Represent networks of people and their organizational and/or institutional affiliations, as well as their products.
Rescanning the document (which we assume to be altered from the previous transform) may be the only reliable way to ensure that it matches the content.
Rough out the new classes and try loading them with instance data; take notes for what can be improved.
SPARQL should also be selecting the default graph with a `GRAPH ?g` construct, but the quad store isn't doing it.
Schema.org has been deliberately designed to be incompatible with RDF Schema and OWL.
Sense Atlas is particularly slow after POSTs because the RDF store only has a single global modification time (that I had to hack in).
Ship a front end with interfaces for IBIS, PM, and a rudimentary FOAF/ORG editor.
Should the focus button also navigate to the network overview?
Solve for mobile.
Store layout data computed on the client side in local storage across requests; invalidate and recompute it if the server responds with new data.
Survey other templating languages.
Switching the focus without being conspicuous about it could cause the user to make a mistake.
Take immediate provisional measures to speed up Sense Atlas (provided they are non-destructive).
The (coarse-grained) layout for the Sugiyama visualization only has to be computed when the state of the graph (actually, subgraph) changes.
The <datalist> elements used to drive the autofills are useless without JavaScript anyway, so could probably be generated more cheaply by JS instead.
The Store is a superclass that other subclasses inherit from, and there is no multiple inheritance.
The Sugiyama code also has a bunch of stuff for prefix/namespace mapping, abbreviating/expanding CURIEs, etc.
The UI for adding and connecting adjacents messes up in annoying and data-destructive ways.
The XSLT component kind of sucks.
The accessors are useful and would be useful with graphs other than those embedded within an RDFViz instance.
The backlinks transform is actually extremely goofed and contributing to slow page delivery, which will only get worse if it has to parse more forward links too.
The catalogue resources, as well as the concept schemes and issue networks, can get particularly large.
The datetime-local input type does not seem to elicit form submission with the enter key like a text box does (in Firefox).
The edge-uncrossing algorithm in d3-dag (and Sugiyama in general) is known to run superlinearly (how bad?) to the edges it has to uncross.
The effort it takes to map out a set of related issues should be roughly equivalent to composing a thread on Twitter (or descendant), where each entity is analogous to a tweet.
The focus is confusing but needed to disambiguate which issue network to attach a new entity to.
The footer loads all the concept schemes/issue networks in the inventory (for labels?) when it probably doesn't need to.
The front page of senseatlas.net is also super janky.
The front-end template is almost certainly doing way more work than it needs to.
The hierarchical nature of the Sugiyama plot may not be appropriate for representing social networks.
The issue/position/argument type toggle widget is a vestige from the original 2013 prototype and never actually made any sense.
The math on the hyperbolic sugiyama visualization is wrong; nodes farther down rank are miles apart from each other (both r and θ).
The only person-to-person relation is foaf:knows and it was deliberately made not symmetric.
The reason why this may not have been done already is that RDF.Namespace is a closure, which means you can't see the namespace URI inside it.
The relationship ontology has 32 person-to-person properties, and that's not even exhaustive. Way more than we can colour.
The relationship ontology has a lot of weirdnesses around property inheritance and a few properties that would be useful that are missing.
The round trips won't matter as much if they take a lot less time.
The template for ibis:Network (skos:ConceptScheme) is really shabby.
The time it takes to generate a markup representation of a resource is proportional to the number of statements.
The two most robust solutions for speeding up Sense Atlas (plus the visualization layout) are also each fairly significant subprojects.
The user's intent is always clear.
The way the template "inheritance" currently works is extremely messy.
There appears to be a general issue of getting nodes into networks.
There are only two choices: IBIS network and SKOS concept scheme.
There is a bigger target to click with radio buttons.
There is a bunch of JavaScript mixed in with the Sugiyama tuning for the graph tool.
There is likewise the persistent threat that one of the browser vendors (say Chrome) removes support for XSLT 1.0.
There is no reason why an addressable transform can't completely replace a response body, rather than just manipulate it.
There is no upgrade/downgrade path to go from { issue ↔ argument ↔ goal ↔ target } or { position ↔ task }.
There is still no capability to use ibis:replaces effectively.
There turns out to be a bug somewhere in the caching mechanism that causes templates to break when they return 304 Not Modified.
There will be an ambiguity with the intent of typing in a value not found in the autofill: are you renaming the current network or making a new one?
There will need to be some kind of event handler somewhere that watches for changes to the subgraph in question and triggers the update.
There will need to be some kind of representation of foaf:Person (who can be attached to an authentication principal).
Treat foaf:knows informally as symmetric anyway.
Try messing around with SaxonJS?
Unlike IBIS which is half a century old, the PM ontology has never been road-tested, and will likely require several iterations to get right.
Update the faux-monad Intertwingler::Representation::Nokogiri to reference a subclass of Nokogiri that has an accessor for the RDF.
Upgrade the node type on a connection to an existing node if the user selects a more specific subclass.
Use a dropdown to select between IBIS network and SKOS concept scheme like in the initialization phase.
Use link preview conventions (SDO, OGP) to render robust link previews in various surfaces (Slack, Discord, Teams, chat apps, &c).
Use radio buttons to select between IBIS network and SKOS concept scheme.
Use schema.org.
Use the force-directed graph for social networks.
Use the import precedence native to XSLT.
Use the relationship ontology for additional person-to-person relations.
Use the saturation to differentiate active from inactive entities.
We have all the relevant data already, but we don't keep it in OGP/SDO.
We haven't determined how we're going to handle rdf:XMLLiteral yet.
We were relying on browser cache to keep XSLT from being intolerably slow.
What about getting nodes out of networks? How do you remove an IBIS entity (SKOS concept) from a network (concept scheme)?
What about the IBIS entity in context? Does it get ported to the other network?
What about the ability to rename a network?
What about the existing instance data that all uses rdf:value?
When a node is in more than one issue network, the visualization shows the amalgamation of all the networks.
While the graph layout is being computed, consider some kind of progress bar or analogous animation to show the user something is happening.
Why not just attach a new entity to all the issue networks its neighbour is currently in?
Write an NSMap class that cosplays as an Object (via Proxy) that also encapsulates the term abbreviation/expansion code and just smuggle it in there along with the rest of the mix-in.
Write front-end code that hijacks form submissions and supplants them with AJAX (again, or whatever it's called).
Yes, always show the focus button and make clicking on it a no-op.
Yes, focusing the network should also go to it.
[ADOPTED] Only focus the new network if the user explicitly signals to do so (i.e., through a dedicated button).
[DONE] Create a template for pm:Goal.
[DONE] Put Sense Atlas online so the client can observe its development.
[RESOLVED(ish)] The display is still goofed on a mobile screen.
[RESOLVED] Client wants the ability to create multiple IBIS networks.
[RESOLVED] For writing to the graph, the IBIS tool requires a "focus" node with which to associate new entries. This is associated with a state object, which is in turn associated with the current user.
[RESOLVED] It is currently not possible to navigate to the "top" cgto:Space from either an entity or a network.
[RESOLVED] Logging in and out of Sense Atlas currently happens out of band.
[RESOLVED] Sense Atlas can sometimes be unusably slow.
[RESOLVED] The editing widgets show up even if there is no current logged-in user.
[RESOLVED] The unlink button appears to be broken (again?) for ibis:suggested-by.
`Date.prototype.toISOString()` encodes the time zone offset as Zulu (UTC) no matter what it actually is.
`RDF::Vocabulary.find` is a major culprit. It is used in `Intertwingler::Resolver#coerce_resource` and does a sequential scan over hundreds of vocabs every time a lookup is done.
rdflib.js breaks attempting to parse the transclusion links in the RDFa variant of the catalogue index when fetching.