Welcome to the homepage of Hypernotation, a novel idea of publishing structured data on the Web. Currently, it's just a single page with basic information, while the more details can be found in the Hypernotation category on http://milicicvuk.com/blog. In addition, here you'll find DBpedia dataset published using Hypernotation. You can browse the data and see what it looks like in practice. Also, be sure to check out the examples bellow.
Structured data forms a different type of a graph than the Web graph in that links between nodes in a data graph have labels, compared to hyperlinks having only a direction. In order to put such a graph onto the Web, a tree structure is used as a middleman. The Web's hierarchical dimension - the ability of link labels to be encoded in a tree path are what enables typed links to be projected on the Web. This way the Web graph gets a missing dimension – labeled links that a data graph needs to be published.
The underlying data model is basically a simplified RDF model. It's made more consistent - there is only one type of node that is always identified by a URI and may or may not hold data. Each node's URI is a path between two nodes in the graph, which means that labeled links are actually written in URIs. The result is a similar paradigm as a file system – traversing data is like browsing through folders. Just like a shortcuts let you jump to any location on a hard disk, hyperlinks can connect distant nodes on the Web.
One way to understand Hypernotation is to look at how it deals with two aspects of structured data - the structure and data.
Roughly speaking, the 'structure' part (i.e. the names of nodes and links) is encoded in URLs using a special hierarchical URL pattern that tells us not only about the location in a tree, but also how nodes are related to each other.
Two connected pieces of data form a relationship. The first piece of data is known as a subject, the relationship (or property) is called a predicate, and the second piece is an object. The simple sentence containing the three is called a triple.
Hypernotation provides a universal pattern for writing triples within URLs, shown in the following image:
Each node is the object of an RDF triple whose subject and predicate are encoded in that HTTP URI. This makes the node inseparable from the triple that contains it.
The key is an optional segment used to distinguish different objects for the same subject and predicate and can contain a hint about the object.
The example above shows the URI of a resource representing the comment of the vegetable celery in English.
When a URL in Hypernotation is looked up, the 'data' part is returned as the body of HTTP response. Data can be a literal value, like a text or a number, but it can also be a thing that has an inner structure and can't be naturally represented as a literal value.
In Hypernotation, every piece of data is a node of a graph. Nodes that hold data represent values of other nodes and they are placed on the surface, while the nodes that are strictly "structural" are placed more deeply in the graph.
Therefore, looking up the URL can either return a literal data or the part of the structure. A literal can be plain text or a hyperlink, while the structure is represented as a list of hyperlinks. A few HTML tags (
<li>) is everything Hypernotation needs for a syntax.
For instance, let's take a look of the response of the
http://hypernotation.org/data__/dbpedia/ used in the example on the left. The source of the web resource is shown below. As you can see, hardly any syntax is used.
Hypernotation is not about one, but two different notations: one for writing URLs and another for formatting data using HTML tags. These two notations are complementary and work together, integrated in a web resource called hyperNode.
Both notations described above are intended for both people and machines. URLs and HTML are friendly to humans, but more importantly, they are readable, understandable and hackable by machines as well:
URLs and data are written using a strict set of universal rules, so they are easily parsable and machine-readable. Data is always written in the same format - HTML, so the client doesn't have to worry about many different syntaxes.
A data graph is based on triples in which concepts are well-defined. Metadata is written the same way as data, so a "machine" doesn't depend on a human any more for "understanding" what it is about.
URLs in Hypernotation are hackable paths that act like sentences containing two types of words. The segments can be combined like Lego bricks - one can often guess where to look and get an indication of the success.
<http://hypernotation.org/data__/dbpedia/Berlin/is___dbont__birthPlace___of> filter: <http://hypernotation.org/data__/dbpedia/Berlin/is___dbont__birthPlace___of/filter__/?page=3> <http://hypernotation.org/data__/dbpedia/Berlin/is___dbont__birthPlace___of/793db10e40e533ef> owl:sameAs <http://hypernotation.org/data__/dbpedia/Eduard_Knoblauch> ; rdf:type <http://hypernotation.org/data__/dbpedia/Berlin/is___dbont__birthPlace___of> . ...
<http://hypernotation.org/data__/dbpedia/Nikola_Tesla> dbpedia2:birthDate <http://hypernotation.org/data__/dbpedia/Nikola_Tesla/dbpedia2__birthDate> rdf:value "1856-07-10" .
<http://hypernotation.org/data__/dbpedia/Waldorf_salad> dbont:ingredient <http://hypernotation.org/data__/dbpedia/Waldorf_salad/dbont__ingredient> <http://hypernotation.org/data__/dbpedia/Waldorf_salad/dbont__ingredient/4dc7b7d31a3219f6> rdf:type <http://hypernotation.org/data__/dbpedia/Waldorf_salad/dbont__ingredient> ; owl:sameAs <http://hypernotation.org/data__/dbpedia/Apple> . ...
<http://hypernotation.org/data__/dbpedia/Celery> rdfs:comment <http://hypernotation.org/data__/dbpedia/Celery/rdfs__comment/en> rdf:value "Apium graveolens is a plant species in the family Apiaceae commonly known as celery..." .