Release notes

0.5.5 2017-06-xx

  • Docs in expanded tree were not sorted by sortProperty (that is, date by default)
  • Clic on the cloud of tags always return docs in subtrees

0.5.4 2017-06-09

  • refactoring (all jars with same version num, no more aggregator project)
  • Upgrade Jena to 3.3.0
  • some stuff related to markdown

0.5.3 2017-04-01

  • markdown
    • using markdown-it (instead of markdown-js)
    • possibility to edit markdown files
  • textarea now 100% of their contening div


  • Upgrade Jena to 3.0.0 -- Beware, requires Java 8 (implied several changes because of conflicts with some old libs that were used here or there)
  • Delicious removed

0.5.1 2015-10-10

  • Bookmarklet was not working with https
  • Some of the examples on the sparql page were not working

0.5.0 2015-05-09

  • Upgrade Jena to 2.13 -- Beware, requires Java 7
  • Corrects an exception that was thrown on a fresh install when changing the title of a document (thanks to Jarriel Perlman for reporting the problem)
  • https documents can now be downloaded

0.4.2 2013-09-30

0.4.1 2013-08-26

  • some bugs corrected

0.4.1 2013-08-13

  • Some RDFa describing tags
  • scripts defined in files are now loaded after the body
  • Links of the tag cloud now uses rel="nofollow". Some other links too

0.4.0 2013-04-18

  • On a tag page, possibility to switch between showing the short list of docs and the long one
  • remove the "resolvealias=true" param that is no more needed

0.4.0 2013-04-06

  • Now uses SKOS properties (skos:broader, narrower, related, prefLabel, altLabel) instead of the properties that were defined by semanlink (sl:parent, related...). Which means that Semanlink now produces skos data, and uses it as native format. (Be warned however that we do not attempt to enforce that "broader-narrower" and "related" are disjoint (something that we think that it should not have been required by skos, BTW). Tags still are of type sl:Tag - a subClass of skos:Concept. Alias have been replaced using the skos:altLabel property. Old data is automatically converted to new ones on startup.
  • By default, displays now the short list of documents for a tag (that is, the list of docs tagged with that tag), no more the list of all documents tagged by the tag or by any of its descendants). Old behavior can still be used (see the "preferences"). In any case however, the tag cloud now contains the list of tags corresponding to the "long list" of documents

0.3.0 2012-08-31

  • RDF/JSON output (application/rdf+json, extension ".rj")
  • JSON-LD output (application/ld+json, extension ".json"), using JSONLD-java, Copyright (c) 2012, Deutsche Forschungszentrum für Künstliche Intelligenz GmbH, All rights reserved.
  • Now CORS friendly (cf this)
  • Now uses maven. Not without some side effects:
    • upgrade to struts 1.3.10
  • Upgrade Jena

0.2.5 2012-04-25

  • Correction of a bug in the bookmarklet


  • CoolUriServlet: if n3 requested in accept header, now returns n3

0.2.4 2012-03-01

  • Corrections in the JSP for Tomcat 7

0.2.3 2011-01-23

  • Pages also available as n3 (tag.n3)

0.2.2 2011-01-01

    • now possible to query using the SKOS narrower, narrowerTransitive, broader and broaderTransitive properties (based of ARQ's property paths) Example queries using these properties Note that: aTag skos:narrowerTransitive aTag. (same with skos:broaderTransitive): otherwise implementing in SPARQL the intersection of 2 hierarchies becomes ugly
    • results of queries DESCRIBING tags: now contain "sl:hasChild" statements ("sl:hasChild" property is not used in the triple store, which only uses sl:hasParent)
    • now possible to use "hasChild" in a query
    • init of a generic mecanism to pass javascript handlers dedicated to the display of given rdf:types
  • Upgraded Jena to 2.6.4

0.2.1 2010-12-29

    • Link to page to enter SPARQL queries now in top menu.
    • Various modifications in the SPARQL page, and in the display of RDF returned from SPARQL queries
    • Searching tags by text example
  • Switch from XHTML 1.0 Transitional to XHTML+RDFa 1.0
  • Export: the publish property can be used for tags

0.2.0 2010-07-26

  • Page to enter SPARQL queries (at sl/sparql).
    • Result of describe queries can be output as HTML, using the Tabulator javascript RDF parser. NOTE that the code for this output is therefore completely distinct from the rest of old semanlink code (this code demonstrates simple production of HTML from RDF on the client in javascript. Its integration in semanlink is kind of a quick hack, just to see.)
    • "sl:hasDescendant" and "sl:hasAncestor" (implemented as Jena property path) (Note that aTag hasDescendant aTag. (same thing with ancestor))
  • sources now included in the war.

0.1.4 2008-09-02

  • Corrects a bug that could lead to creation of tags without being in edit mode (this was not possible for a human user using the GUI, but it was for Googlebot, cf Crawling through HTML forms

0.1.3 2008-06-21

  • Edit tag page now display a special form to add rdf:type values for the the tag (A Tag can be for instance a foaf:person)
  • List of domains that have been bookmarked (from welcome page). Just as with new entries, during the last month by default: add a "days=xx" param to change that.
  • When the sl:describedBy property of a tag is defined, (case of tag created from bookmark form), it is now shown in the title bar of the tag
  • Logo

0.1.2 2008-02-25

  • Tag search's results now available as RDF. Dereferencing for instance returns html or rdf (the rdf is also available at
  • New "Create Tag" button on the bookmark form: to create a tag as the thing or concept defined by the bookmarked HTML page (new property sl:describedBy)
  • When clicking the bookmarklet on a page that is the homepage of a tag, or that "describes" a tag (that is, a page such as tag,sl:describedBy,page), you are now redirected to tag's page.
  • New tags now listed on the "new entries" page
  • New "lang" menu in the "Preferences" Panel
  • Greek documentation more complete

0.1.1 2007-12-17

  • Application now available in Greek, thanks to Dimitris Delevegos.
  • Now possible to change the language of the application adding a "lang=xx" param to a request. Only "en", "fr" and "el" available (French, only partially)
  • Live search now working with IE7. Bug was due to the fact that the javascript test (window.XMLHttpRequest) returns true with ie7 (it was not the case with ie6). But contrary to non ie browsers, ie7 requires a call to new XMLHttpRequest for each ajax call. It looks like microsoft tried to break scripts with this move. Didn't they?

0.1.0 2007-11-26

  • Tagging using non-latin characters is now supposed to work
    • but it has been tested only in modern Greek
    • net.semanlink.util.text.CharConverter: characters that are above 'z' when converted by a SimpleCharConverter are no more converted to the weirdCharSubstitution. They are now converted in the same way as by,"UTF-8").
    • net.semanlink.servlet.CoolUriServlet: patch the behaviour of HttpServletRequest.getPathInfo() when used for a request containing UTF8-encoded characters
  • Changes in the way tags are indexed by their labels. Corrects problems that existed when the label of a tag was changed. This will allow to use several labels for a tag (and index all of them), without the workaround based on aliases.
  • Changes in the tag page and Display preferences. By default, a tag page now displays both the tree of descendants, and the list of all documents tagged with the tag or any of its descendants. Display preferences: two select menus instead of one: one for the display of descendants, one for the list of documents.
  • Localisation : Strings of the application (labels of buttons,...) can now be stored in XML files, in order to allow the localisation of the application. Actual replacing of the strings in the application is a work in progress. The class net.semanlink.servlet.I18l contains a main and some tools to produce XML properties file ready to be translated. New lang parameter in context file. For now, the localisation concerns only the application as a whole (not on a web user basis).
  • Thesaurus index is now loaded during init. Until now, it was loaded only at the time of the first request.
  • Added a small piece of RDFa in the HTML page of a tag, to state that this page has a foaf:primaryTopic which is the tag (a non-information resource). This is a follow-up of the thread "How to get the uri of a non-information resource from the corresponding HTML page?" on the LOD mailing list.
  • Added a "slc:publish" property for documents (expected values: "true" or "false"° Defaults to true for bookmarks, to false for local files.
  • "AND" search for tags now lists the common descendants (and not only documents) (new Intersection class in net.semanlink.graph package)
  • Added "Cut" and "Paste" buttons in "edit tag list" forms
  • New conf/props.rdf file to list the properties available in the select menus in edit mode
  • "Saving a copy" now works on ("Saving a copy" first issues a "HTTP HEAD" to learn the content type of the file. If it is HTML, was HTTP GETting with an accept-header set to "text/html". But in this case returns a 404. Now the accept header is set to "text/html, text/*, */*")
  • The link to document on bookmark form was not working with FireFox. Now it does (at least with FF 2.0)
  • Change in the css to have let Safari 3 displaying aqua buttons
  • Added a link from a tag to its foaf:homepage

This is release 0.0.0 2007-03-26

  • Another count is 1789.07.14. Anyway, 0.0.0 seems better for the first release available as a free download.


  • redirect after post now implemented


  • "http-range14", with "303 redirect", now implemented


  • Delicious synchronization


  • Many changes in the way the set of semanlink files is defined and loaded at init
  • Tags now have a slash uri (no more a # one)


  • Presentation at the Jena User Conference


  • First release used at Renault in "Intelligence Artificielle Appliquée - SICG" department


  • Live search and live tree, implemented using Ajax


  • Creation date now automatically added. Used to decide in which file bookmarks are stored (no more in one big file)