Link Filtering Syntax Help

Hi there. I’m doing a worldbuilding/narrative project involving many links between notes, and a key part of the project is character social webs. I’d originally hoped Hyperbolic View would be helpful in developing my ideas for story scenes by letting me organically explore character social groups. However:

This is a large cast with many different kinds of relationships and I’m not sure Hyperbolic will be up to the task without some kind of link filtering–which I don’t think exists yet?

That said, I know there are functions that can… explore and report on links via queries? However I simply can’t make sense of them. At the most basic level, I’d be satisfied with an agenty way to query and gather up, say, “All of Ashara’s friends [outgoing links],” or “All of Leirath’s enemies [incoming links],” and similar things. (This would also be useful later in gathering up all the Events any given character has participated in.)

(The ideal would be, well, filters on Hyperbolic, so I could start with Ashara’s Friend links and then click over to see Anhel’s Friends and explore that overlap and those Friend of a Friend connections. But I’ll take what I can get.)

New tools for hyperbolic view are coming soon.

In the meantime, take a look at eachLink(x){} .


Examines each link, either inbound or outbound to this note, with the exception of prototype links. The local variable x is bound to a dictionary of link properties, including source, destination, type, class, title, target, url, comment, and anchor. The property isFirst is true for the first link in the enumeration and false otherwise. The property isLast is true for the final link in the enumeration and false otherwise. Changes to this variable values are not (yet) recorded as changes to the link.

The optional second argument designates which note’s links are to be examined. If absent, eachLink examines the links to and from this note.

Inside the eachLink body, changing the values of the following keys will change the link: type, source, and destination. Other keys are read-only.

1 Like

Hmmm I’ll try to work out that function. Otherwise hearing there are updates planned soon is music to my ears.

While I was poking at the display with crosslinks active:

I realized what would be super amazingly useful would be the ability to Focus on one character and then put a secondary focus on another character and kill all crosslinks that don’t involve that other character. With or without link type filtering, so I could see that, say, Ashera is Cordial with somebody her friend Carraday Dislikes. Being able to easily spot that kind of potential drama would be wonderful.


I’d welcome a version of this doc, or something like it, as a test file…

1 Like

Sure! It’s all fictional, so no private data. The primary elements are the Characters, the Locations and the Events (or Encounters, I think I changed the name). In keeping with various bits of advice I’ve seen I’m trying to keep my initial structure relatively simple–but I do expect the locations and characters (already numerous) to steadily increase over time as I need more specific locations and supporting characters (which is why I’m thinking ahead about ways to keep viewing the data useful).

(replaced link below)

Here’s an updated document; I decided to clean it up just a tiny bit for my own peace of mind.
Sample Character Web Document.tbx (599.8 KB)

Oh and I wanted to add I’m already finding just establishing Links to be incredibly useful in helping me develop my Cast of Thousands. I’m currently working in Outline view with the Link Parking: I drag up a specific character’s link and then run through the outline, evaluating if they have a relationship with each other character and if so what that relationship is. A great way to flesh out the brief mental images I have of some of these folks!

This is terrific!

Even the basic hyperbolic view shows interesting things. For instance, how Caraway knows a lot of people, but there’s a whole bunch that are related only through Anhel. It’s an interesting graph…

1 Like

Yup. I haven’t finished going through the list yet, but Anhel was the first and he knows nearly everybody. Being able to spread that side out to see who she (Carraday) doesn’t know would be interesting but that kind of negative space-view won’t be useful nearly as often as some other views I’ve imagined (and mentioned above). Zooming in reveals quite a lot of the “non-relationship exploration,” I’ve discovered, although the stuff at the back of the stack can get tricky to get a tooltip identifying.

In the interests of being helpful, here is a new version of the file, with all 38 CharacterBank social webs completed. As you mentioned, even now interesting data can appear:

In the future I expect to add more tertiary characters, who will be linked to far fewer characters, and once those second degree-of-separations start showing up I’m expecting it will look even more like a web.

Sample Social Net.tbx (654.8 KB)

1 Like

I’m noticing that when I use a Link Parking Space by dragging, it remembers the previous link type used, but when I use the keyboard shortcut, it resets to a basic ‘untitled’ Link each time. Is this how it’s supposed to work?

I suspect not. worth reporting that to (as this is formally a user-to-user forum) the post here might get missed).

Loving this thread. It repeats, usefully, previous discussion of this. The issue is less what Hyperbolic view does, than the promises it can’t deliver on. That said the latter require engineering in the app and aren’t trivial.

But I think Hyperbolic view could rival Map view as part of Tinderbox’s USP.

Once (if!) we embrace use of link types as having semantic intent (as opposed to be visible line labels in a drawing) cool analytical stuff can happen. Some of it is counter-intuitive, especially if one’s start point is the limited version of hypertext used in the Web, where all links need to be hard wired into the note, i.e. what Tinderbox woulds classify as ‘text links’ as discrete from other sorts of links.

Currently, the Hyperbolic view allows a single link type to be bolded, but in a busy network this can be lost. An existing feature request (and, who knows, a change as hinted at above :crossed_fingers:) is to be able to do this emphasise a different way where the graph stays as it (i.e. the notes) but all links except the desired type(s) are not drawn.

For my 2¢ Hyperbolic is the most interesting view in terms of potential. It’s potential like this that keeps me using Tinderbox. I don’t want an algorithm to give me the answer. I want to be the human in the loop; our robot overlords can wait.


Also meant to say thanks for posting a TBX. Such things are always work to do, but help others to help, and engage. Yay!

I shall do this, thanks for the pointer.

As for Hyperbolic vs Map, I was thinking something similar as I poked at my extremely crowded CharacterBank map view and observing how ‘Dance’ became completely nonfunctional. This is ok, because Hyperbolic View does exist! I love the use of Link Actions (even if right now I’m just using them to assign Linked data to attributes–probably not a step I’ll need once I master those functions, honestly).

As I add in those tertiary characters, I’m using Hyperbolic view to do so; it turns out to be a fast and smooth way to do what the Map view is too crowded to support now. I was overlooking this at first, partially because I was working from a pre-existing imported list, and partially because I’d gotten in the mode of thinking of the view as ‘read-only’ because notes can’t be dragged around like they can in Map view.

Latest screenshot:

Sorry for posting so much but I just looked at this:

As mentioned above, Anhel knows almost everybody. I think it’s fascinating (and helpful) that Hyperbolic chose to spread out those connections among other mutual links. It’s a little bit deceptive, of course, at least with cross-links turned off (currently essential), but useful… Honestly, I don’t even know if it’s because of something I did or just the software trying to be helpful. It’s very interesting, though.

ETA: You know what would be cool? The ability to assign weights to each Link Type that Hyperbolic could take into account when building this kind of diagram–although maybe link type filtering would do that automatically.

How would that affect the view.

FWIW, currently the hyperbolic view is laid out on a notional spherical surface. The further from the currently centred note the smaller the note is plotted.

†. In reality it think this is a hemi-spherical surface as we can’t see the back of the sphere.

Actually, it’s a hyperbolic surface.

1 Like

…Oh! I remember! It would make the length of the lines/size of the box variable based on the weight. I know about the curving surface, oh yes. Everytime I need a break in writing, I switch to that tab and swing the view around, back and forth, back and forth, ooh, spin it… that kind of thing. It turns out to keep me on task far more than looking at random webpages!

Uh, so, yeah! Long lines would push out smaller boxes, because they’re not important to what you’re looking at right now, but they’re not irrelevant, either. It’s the sort of thing I’d intuitively do if I had to display something with many dangly bits on a seriously curved stand. Sort of like rays on a common sun icon?

1 Like

My apologies. For those of us who might not know the process at hand here, see Hyperbolic geometry - Wikipedia.

I+++ for Hyperbolic link filtering. IMO, Hyperbolic view so unique, it is distinctly Tinderbox. Link filtering would declutter its view when needed. It would be totally useful.



The network grows. I like to take a moment to appreciate the pretty designs.

Filtering by (say) a Prototype or Container query (as well as link type) would be useful too.