API Client Libraries, API Client Library, Client Libraries
API Client Libraries

Ultralink has a very robust REST API which you can interface with using your preferred method of interacting with REST endpoints. However, we also provide high-level language specific wrapper libraries so you can quickly and easily interact with Ultralink Servers without worrying about the particulars of the API itself.

The client libraries are all object-oriented and present an extremely simple and straightforward way of interacting with Ultralinks and other relevant structures. Even if the underlying API changes, the client libraries will change with it so you don't have to worry about your code breaking.

We also have plans to continually add support for more languages over time.

A bookmarklet is a tiny program that is saved into your web browsers list of bookmarks. When the user clicks on a bookmarklet, instead of navigating to a different web page, the browser executes the program which can modify the current page you are on or perform any number of tasks.

We supply a basic Ultralink bookmarklet that allows you to overlay Ultralinks into the current page you are on with a simple click of a button. The bookmarklet can especially be handy on mobile platforms where browser extensions are much less common.
Browser Extension
Browser Extension

Browser extensions are small applications that operate inside web browsers to extend their functionality.

We provide Ultralink browser extensions for all the major web browsers that overlay Ultralinks on top of the webpages you surf to.
Database Creation
Database Selector, DB Selector
Database Selector

The Database Selector is a UI control in the Dashboard that appears in the upper right-hand corner once you have permissions for more than one Ultralink Database. Through this you can easily switch the database configuration of the Dashboard at any time.
Hosted Database, Database Hosting, Hosted DB, Hosted Ultralink Database
Hosted Database

A Hosted Database is an Ultralink Database that is located on our servers at It is one of our consumer products that we make available on both a free and a paid tier.

Anyone with an Ultralink Account can create their own Hosted Database for free (100 Ultralink limit) and immediately start playing around with Ultralinks. You can remove the limits of your database at any time by purchasing a monthly Hosted Database subscription.
Mainline Trending List, Trending List
Mainline Trending List

The Mainline Database constantly has a ton content coming in for analysis. We recognized that we could calculate which Ultralinks were trending as a result of significant recent events. The Mainline Trending List is a webpage that shows the top 100 trending Ultralinks in the Mainline database for the last 1, 2, 3 and 7 time periods. It's updated approximately once an hour.

A significant contributor to what gets on the Trending List is the Ultralink News Twitter account. All content tweeted out by any followed account is immediately washed through the Mainline database and contributes to the Trending List.
Primary Occurrence
Primary Occurrence

Whenever a fragment is analyzed to see what Ultralinks should be matched, it builds a list of all the Ultralinks that have word string matches that are contained within the text.

For example, if there is more that one Ultralink that matches the same word string, only one of them can be considered to be the 'primary' occurrence. The primary occurrence is the one that has been determined to be the best match among all the possible Ultralinks in the context of the fragment.
Site Plugin
Site Plugin

We define the term "Site Plugin" to mean a piece of software that you can install or add into an existing website to extend it's functionality.

We provide a couple of different Site Plugins to make integration into your blog, wiki or website simple and non-technical.
Ultralink Account, Account
Ultralink Account

Everything done on goes through your Ultralink Account. Anyone can create an Ultralink Account for free with just a verified email address through the Dashboard.

Once your account has been created, you can do all sorts of stuff like edit the Mainline Database, create a Hosted Database and authenticate the Ultralink browser extension.
Ultralink Community, Ultralink Community at Slack, Ultralink Community Slack, Ultralink Slack
Ultralink Community

We want to do everything we can to foster a robust, friendly and responsive user and developer community. To help facilitate smooth interaction and easy support access we have created a Slack instance (a realtime collaboration platform).

Anyone with an Ultralink Account can get instant access. Feel free to hop on with any questions, feature requests, bug reports or anything else that is on your mind.
Ultralink Dashboard, Dashboard
Ultralink Dashboard

The Ultralink Dashboard is a tool on every Ultralink Server that allows users to inspect and modify various aspects of the Ultralink Server and the Ultralink Databases stored there.

Each user that has an account on the Ultralink Server can log in and use the features made available to them based on their permission level. Some examples include browsing and modifying Ultralinks, viewing analytics, making configuration changes and performing high-level data cleaning.
Ultralink Insight, insight
Ultralink Insight

An Ultralink Insight is a user-defined, passive background query that pro-actively brings your attention to specific Ultralinks when the conditions you are have defined are triggered. It is probably best understood with an example.

Suppose that I care about finding people that are one connection away from me on Angel List. I could click on every person Ultralink in the page, then click on every Angel List link and inspect the inline view to check if that person is connected to anybody that I am connected to. This is a laborious process and not generally worth anybody's time to perform.

Instead I can configure an insight which will silently and automatically make an API call for every Angel List link present on every person Ultralink on the page. The insight code then inspects the results and if it sees that the person is indeed two hops away from me then the Ultralink gets prominently highlighted with a red text shadow. This grabs my attention and tells me that this Ultralink has data behind it that I care about.
Ultralink News
Ultralink News

Ultralink News is a Twitter account that follows accounts for major English-language news outlets. The Mainline Database uses the feed from this account to analyze and pre-crawl every article that gets published from these sources. This large stream of data helps the Mainline to calculate more accurate Trending List results.

Every day, this account also tweets out the topmost trending Ultralink for the previous 24 hour period. Every week it also tweets out the topmost trending Ultralink for the previous 7 days.

Tweet at it with suggestions of other good content sources to follow.
Ultralink REST API

Every piece of functionality in the Ultralink Server is fully exposed programmatically through our REST API. Through the API you can create, modify and delete Ultralinks, directly perform fragment analysis and do pretty much anything you can do through the Dashboard from your own code.

We have put a lot of work into making the platform easy to use and comprehensive. You can make calls against our REST endpoints directly or you can also use one of our API Client Libraries which provide simple object-oriented wrappers around our API endpoints.
Ultralink Windows App, Windows App
Ultralink Windows App

The Ultralink Windows App is a native Windows application that overlays Ultralinks onto another other Windows application. It is similar in function to the Ultralink browser extensions except that instead of clicking on text to bring an Ultralink up, you press a configured hot key.

The Ultralink Windows App uses all the same technology as its web-based brethren under the hood. This means that any link type or inline view you create can be used in the same way with the Windows app with no modifications.
Content Hash, Fragment Hash
Content Hash

The content hash is a quick and succinct identifier for fragments residing inside a page. It is produced by running the SHA1 hashing algorithm over the processed content of a fragment's HTML element.
Custom Link Type
Custom Link Type

Developers can easily extend the Ultralink's functionality and customize it for their specific needs by creating their own custom link types.

It its most basic, to create a new link type all you need is an icon. From there you can specify exactly what kind of behavior you want it to exhibit and you can even add your own inline views.
Fragment, Content Fragment, Text Fragment

In the context of discussing Ultralinks, a fragment, is simply a chunk of content (primarily textual). It is portion of some content that has been identified as a unit and can be sent to an Ultralink Server for analysis.

Often, Ultralink code will break a large piece of content into several fragments. This can help make the process of analysis more parallel and enables optimizations such as getting the Ultralink results of visible portions of content in place immediately before the rest has yet to be analyzed.
Fragment Analysis
Fragment Analysis

When the code goes to overlay Ultralinks on a page, it first breaks it up into fragments. If it needs to, it sends those fragments up to the Ultralink Server. There it undergoes Fragment Analysis which is the process of washing the content through one or more Ultralink Databases in order to determine exactly what Ultralinks are contained within the fragment.
Mainline, Mainline Database

On every Ultralink Server there is at least one Ultralink Database. This database is called the Mainline. By default, when Ultralink code targets the Ultralink Server and asks it to perform fragment processing, it gets washed through the Mainline unless otherwise specified.

The Mainline Database on the Ultralink Server at currently has about 1.7 million Ultralinks in it and is free and open for general usage.

The Mainline is usually used to produce broad and very general purpose Ultralinks so that Ultralinks clients can throw any content they want at it and it should be able to do a decent job supplying Ultralinks for that content. For more specialized contexts and Ultralinks, you can create other custom Ultralink Databases on a single Ultralink Server.
Page Ultralink
Page Ultralink

When fragments are analyzed on an Ultralink Server, it keeps track of the page URLs that the fragment resides in. These pages can optionally have an Ultralink associated with them (it's Page Ultralink).

If the Page Ultralink is set during fragment analysis, it is used in weighted calculations to determine what Ultralinks should be displayed and how to correctly disambiguate. It is used to provide context to these algorithms so that they can make the right decisions.
Scanning Guide
Scanning Guides

Scanning guides are sets of objects that dictate specifically which chunks of content should become fragments and be analyzed and with what options. This allows developers to very precisely add Ultralink integration into their existing applications.

For example, you can specifically target one part of your application to be analyzed and filtered through one Ultralink database while overlaying Ultralinks from a different database over another. You can also specify different Ultralink behavior in both fragments even though they are in the same page.

There is currently scanning guide support in both web-based and native Windows application environments.
URL Hash, Page Hash
URL Hash

The URL hash is a quick and succinct identifier for a page with content on it produced from the SHA1 of the page's URL. It is used in the construction of URLs that are used to retrieve fragment analysis results from an Ultralink Server.
Ultralink Core
Ultralink Core

The Ultralink Core is a portion of the Ultralink execution logic that can potentially execute in a privileged environment. Examples of privileged environments are the browser extension sandbox or the separate JavaScript memory space inside the Ultralink Windows app. It is in these kinds of environments that encryption keys/passwords can be securely stored, privileged API calls can be made and cached on a scope higher than the individual page the Ultralink code is executing on.

Sometimes this core logic does not necessarily reside in an especially secure environment (such as just running the bare JavaScript by itself on a web page). In those cases the core cannot take privileged information handling duties or user authentication.
Ultralink Database
Ultralink Database

In most cases, Ultralinks are not specifically authored inside content. Instead, content is sent up to an Ultralink Server for analysis, at which point it is washed through one or more Ultralink Databases.

When a fragment is analyzed, a set of all the Ultralinks in the Database that match text in the content are calculated and returned for use.

An Ultralink Database is a collection of Ultralinks that have a similar usage context or purpose. It sometimes makes sense to organize Ultralinks into separate Databases so that certain content will match against some Ultralinks but not against others.

Anyone with an Ultralink Account can create their own Hosted Ultralink Database and test Ultralink functionality for free.
Ultralink Root, Remote Root, Root
Ultralink Root

An Ultralink Root (Root, Remote Root) is a directory containing custom settings, custom link types and other resources that can extend Ultralink functionality.

Developers can create an Ultralink Root to add their own functionality and integrate their own systems into Ultralinks. Ultralink Roots can bundle together related functionality into one place that can be easily leveraged by the Ultralink logic.

Ultralink Roots can be associated with specific Ultralink Servers and Ultralink Databases which makes deployment trivial and automatic in many cases.
Ultralink Server, Master, Master Server, Server Software, Ultralink Master, Ultralink Master Server
Ultralink Server

An Ultralink Server contains one or more Ultralink Databases. When Ultralink code needs to calculate exactly which Ultralinks are in a fragment, it sends it to an Ultralink Server.
Ultralink UI
Black Shadow
Black Shadow

When an Ultralink is presented to the user, every link displayed is in one of two states: either blue shadow or black shadow.

A black shadow around a link indicates that there is content behind the link that can be displayed by an inline pane. If the user clicks on a black shadow link, then the corresponding inline pane will pop up and present the user with the requested information.

When black shadow links are clicked, they switch to blue shadow links while the inline pane is being presented. This allows the user to still navigate directly to the link address if they want.
Blue Shadow
Blue Shadow

When an Ultralink is presented to the user, every link displayed is in one of two states: either blue shadow or black shadow.

A blue shadow around a link indicates that it will function the same way as a traditional hyperlink. The means that if the user clicks on it, they will navigate to the link address in their browser window or it will open up in a new tab depending on their settings and specific usage.

When black shadow links are clicked, they temporarily become blue shadow Links to allow the user to directly navigate to the link if they so wish.
Inline Detach Button, Detach Button
Inline Detach Button

The detach button sits in the upper right-hand corner of inline panes. When the user clicks on it, the inline pane separates from the Ultralink it was invoked from. It can be dragged freely around the screen by it's edges.

After the user clicks on the detach button, it's color changes to red and now becomes a close button. This button simply closes the inline pane.
Inline Pane
Inline Pane

An inline pane is a small window which pops out of an Ultralink when the user clicks on a link with a black shadow on it. It's purpose is to display the content behind the link so that the user can immediately consume it in a clean and concise manner.

An inline pane can simply display the link itself (iframing) or it can present a custom interface created for use within the Ultralink called an inline view.

In most environments, there is a small circular button in the upper right-hand corner of every inline pane called the detach button. By clicking this button, the user can detach the inline pane from the Ultralink and drag it by it's edges around the screen. Detaching inline panes also allows you to keep around more than one at a time.

Developers can easily create their own custom link types that support inline panes of either type.
Inline View
Inline View

When link content is presented to the user in an inline pane, it can either be a simple window to the link address itself (iframe) or a it can present a custom-made interface called an inline view.

These interfaces are tuned for quick and simple display of the information behind the link. They are designed to help the user quickly get what they need and continue on in the page they are on. There is a standard set of tools available to inline views to help make development easy and reduce redundancy.

Their design can range from highly interactive and complex embedded applications, all the way down to basic logic that performs some modifications on the link address and then puts it in an iframe.

At the end of the day, an inline view is simply a webpage in which developers can create whatever solution they need.
Link Type
Link Type

Every link associated with an Ultralink has a specific link type identifying what kind of a link it is. The link type determines how a link should be categorized, displayed and what kind of functionality can be associated with it.

For example, there exists a "Wikipedia" link type that conveys to the user that the content behind the link is from Wikipedia. This way the user knows what to expect and can more easily find what they are looking for. Also, Wikipedia links have the ability to bring their content right into the same page as the Ultralink through an inline pane.

There is a set of standard link types that are built in to the base Ultralink functionality, but developers can easily add their own custom link types to fit their needs.
Next Ultralink Button, Next Ultralink
Next Ultralink Button

When content is analyzed and Ultralinks are layered in, there are situations where a specific chunk of text in a fragment can match more than one Ultralink. Common examples of this could be two people with the same name, or words that have different meanings depending on context.

In those situations, every matched Ultralink is layered into the content but when the user clicks on the text, only the Ultralink that best matched the context of the page will initially be displayed. The user can then click on the Next Ultralink button to cycle through all the other matching Ultralinks in descending order of relevance.
Ultralink Drawer, Drawer
Ultralink Drawer

The Ultralink Drawer is an optional part of the Ultralink that holds links that are not visible by default. There is a small button at the bottom of the Ultralink that toggles the Drawer open and shut.

If you have some of the same links that you want to globally attach to a lot of your Ultralinks, it might make sense to keep them in the Drawer so that they are always easily accessible but not front and center.
Ultralink Link
Ultralink Link

Every link associated with an Ultralink has a link type. The Ultralink Link is of a special type because it points to the webpage for the Ultralink itself on the Ultralink Server that it originated from.

This link allows you to browse the data associated with the Ultralink and will also let you modify or delete it if you have the appropriate permissions.

This link is also visually set apart from all of the other links and only exists if the Ultralink came from an Ultralink Database on an Ultralink Server. Ultralinks that are created on the fly do not have an Ultralink Link.
Ultralink Parts
Primary Category
Primary Category

Categories are the primary way of organizing Ultralinks into groups and performing high-level management. Ultralinks can have one or more categories but one of them is always considered the 'primary' category. This means that out of all the categorizations for the Ultralink, the Primary Category is the one that is considered to most accurately and generally describe the Ultralink.

When creating an Ultralink, you don't have to specify an initial category. However, if you don't specify a category it will add the '(NEEDS CATEGORIZATION)' category automatically.
Primary Word
Primary Word

Every Ultralink has one or more 'words' attached to it. This set of word strings is how the Ultralink Server knows how what Ultralinks need to go where when it performs fragment analysis. You can optionally set one of these apart and distinguish it as the 'primary' word for the Ultralink. The purpose of the primary word is to be an accurate representation of the Ultralink when presented by itself.

For example, an Ultralink for a person might include words for their full name, legal name, nickname, stage name, abbreviations, titles, etc. Of all of those, there is probably one that they are known by more than the others (like the stage name for a performer). Or for other people it might be their full name so as to correctly identify them in a general context.

Ultralinks do not require a primary word but it can help increase accuracy in fragment analysis and make for a cleaner presentation when referring to Ultralinks.