Deploying to travis results in error in opening zip file

using java and maven

Once deploying in travis resulting in corrupt jars, for example by using maven 2.2.1 (which does not following 301 redirects; if you look at the .pom or jar that are downloaded into your local repository, you will see the 301 HTML that was delivered from the server), these jars seems to be cached by travis. They can be removed in the travis local .m2 directory, but when fixing the problem and deploying anew, the cached corrupt jars will be “downloaded” into the local .m2 and results in the same error. Waiting a day or so, this cache seems to be updated so that the travis errors “error in opening zip file” disappear at least.

Inline Skates in Koeln kaufen

Inliner in Koeln – wo sind die Shops ?

Inline Skates kaufen in Köln – eine große Auswahl hat galeria-kaufhof.de. 5 Sterne. Bewertet von: dr0i am 10. März 2014.

Die kompetenteste Beratung gibts beim kölnbekannten muskelkatersport.de,
wo ich auch zuerst hingegangen bin. Interessanterweise, entgegen der
Aussagen auf den Seiten von muskelkater (aber nach eigener Erfahrung
genau richtig), hat mir der Berater empfohlen Inline Skates sogar eher
lieber eine halbe Nummer kleiner zu kaufen als zu groß. Das hat mit der
etwas gebückten Haltung beim Skaten zu tun, dadurch dass beim Fahren ein
bisschen in die Knie gegangen wird rutscht der Fuß nach hinten – wobei
vorne an den Zehen mehr Luft ist. Ein möglichst passgenauer Skate ist
aber wichtig für möglichst gute Fußhabung beim Skaten. Alas -  die
Auswahl im Laden ist so beschränkt dass in meiner Größe gar nichts da
war – auch nicht nach 3 Wochen Wartezeit und einigen Telefonaten, ob
nicht doch noch was in meiner Größe eintrudelt.

Also bin ich in die kölner Filiale von sportscheck.com.
Die Auswahl war wiederum sehr klein – wieder nichts in meiner Größe !
Denn nicht alle auf ihrer Internetseite angegebenen Skates sind
tatsächlich auch in der kölner Filiale. Die Beraterin war aber sehr nett
und sagte, dass ihr Kunden gesagt hätten, dass bei Kaufhaus direkt
gegenüber eine große Auswahl vorhanden wäre. Danke nochmal für den
Tipp !

Und im galeria-kaufhof.de
bin ich endlich doch in Köln fündig geworden! Eine ziemlich große
Auswahl, und dazu noch ein sehr netter und gar nicht mal inkompetenter
Verkäufer (auch wenn er so aussah als ob er niemals selbst Inliner
gefahren wäre). Im Laden lässt sich zudem prima Probefahren.

Fazit: die Internetsuchmaschinen wissen vielleicht, wo es die
billigsten oder besten Inliner gibt. Sollen die Produkte aber in einem
Laden Deiner Stadt sein, dann macht sich die Kompetenz beim Search
Engine Optimizing ausserordentlich bemerkbar. Ich hoffe, dieser
Blogbeitrag kann das ein bisschen zurechtrücken :)

Review of “Untitled Rum 5 Years 40%

Review of ‘Untitled Rum 5 Years 40%’.1/5 stars by dr0i, November 2013
This rum is bad quality, at least the bottle I got. It’s quite expensive
(20,- euro), but it tastes shittier than a 4 Euro one. Maybe the bottle
was standing too long in the sun. Maybe they took adhesive’s to the
flavour. My experience: “untitled rum” is undrinkable.

Publications

a list of my articles and presentations

Articles:

Christoph, Pascal (2013): Datenanreicherung auf LOD-Basis. In: (Open) Linked Data in Bibliotheken S. 139-167. Lizenz: http://creativecommons.org/publicdomain/zero/1.0/. URL: http://www.dr0i.de/lib/pages/Datenanreicherung_auf_LOD_Basis.html.

Christoph, Pascal / Pohl, Arian (2013): Dezentral, offen, vernetzt –
Überlegungen zum Aufbau eines LOD-basierten
FID-Fachinformationssystems. Lizenz: http://creativecommons.org/publicdomain/zero/1.0/. URL: https://wiki1.hbz-nrw.de/pages/viewpage.action?pageId=10453777.

Presentations:

Christoph, Pascal (2011): Linked Open Data. Licence: http://creativecommons.org/publicdomain/zero/1.0/. URL: http://pascal.dr0i.de/praesentationen/vifacamp2011_LOD.pdf.

Christoph, Pascal (2012): Catalog enrichment à la Linked Open Data. Licence: http://creativecommons.org/publicdomain/zero/1.0/. URL: http://www.slideshare.net/dr0i/swib12-workshop-lodbeginners.

Christoph, Pascal (2012): Building a High-Performance Environment for RDF Publishing. Licence: http://creativecommons.org/publicdomain/zero/1.0/. URL: http://www.slideshare.net/dr0i/swib12-22-2.

Christoph, Pascal (2012): Kataloganreicherung à la Linked Open Data. Licence: http://creativecommons.org/publicdomain/zero/1.0/. URL: http://www.slideshare.net/dr0i/kataloganreicherung-a-la-lod.

Jansen, Heiko / Christoph, Pascal (2012): Dynamische Kataloganreicherung auf Basis von Linked Open Data. Licence: http://creativecommons.org/licenses/by-nd/3.0/de/. URL (Preprint): http://www.hbz-nrw.de/dokumentencenter/produkte/lod/aktuell/kataloganreicherung_jansen_christoph.pdf.

Losing my dyndns account – pascal.selfip.org is no more

The problem:

After 9 years of using dyndns for free to avoid the high costs of renting a static IP (60 euros per year by my German provider “netcologne”) to use my laptop at home as a server, dyndns.org now takes money for their dns service – about 25 $ a year. There are several reasons for me not to pay, and so I lost the control about the subdomain “pascal.selfip.org“. There are not to many references in the internet to this domain, but I find it sad. Hate broken links. (All the URLs of that subdomain were valid through all these 9 years, I made this for sure).

The content formerly found at http://pascal.selfip.org/ can now be found at http://pascal.dr0i.de/ . This is a subdomain of the domain I have rent at selfhost , and with the renting of that domain I got a also a dyndns support at selfhost which I need to route to my server at home. And all this costs only 18 Euros . Also I was able to pay via German bank transfer action (“Überweisung”) which is superior to any paypal or mastercard/visa etc. because of security and tracking reasons. This is also why I decided against paying the 25 $ , which I considerd to do otherwise (at least for one year, to give the domain the HTTP status code 301 . (Dyndns gave me that chance to redirect, but I always said to me “ok, will do that next week”. I had to log in once a month at dyndns to keep the account alive. Now, for 3 months I logged in once a month, but the last time I missed it. So that was that and sad. Anyhow, even if I would have given the status code 301, only the search engines which hit in that time frame would know about the permanent redirect. All the broken links stored in webpages will somedays be just that – broken links. Worse, they could be “hijacked” by someone who takes that subdomain and fill in with whatever content))

Lesson learned:

Using a dynamic IP is ok, but not for publishing URIs for your content! If you do not control the domain, what if e.g. the tenant of that subdomain decides to take it away if he wishes so , for whatever reasons? You are defenceless. From that follows vice versa: do not ever link to content to subdomains if you are not sure if the corresponding domain is in control of the people who provide the content . So, my strong advice, use a dyndns subdomain solely for routing purpose in the CNAME of your DNS entry for your real domain to route to your home server. As for my domain dr0i.de I do just that – and the switching form dyndns.org to selfhost.de for dr0i.de to mimick an expensive static IP has no bad side effects like those forever broken links for pascal.selfip.org . And if selfhost.de for whatever reasons will be unbearable for me, I will held my domain and switch to another dynds provider or rent at least a static IP – however, I will not have headaches with broken links.

May the links always be stable!

Artikel “Datenanreicherung auf LOD-Basis” erschienen

über die Online-Version

Ich habe letztes Jahr einen Artikel zum Sammelband (Open) Linked Data in Bibliotheken geschrieben. Gestern nun lieferte die Post 5 Bücher an den Mitherausgeber, meinen Bürokollegen Adrian Pohl. Schon schön, so ein echtes Buch in Händen zu halten :)

Das Beste ist aber: mit der Herausgabe ist das “Embargo” abgelaufen, und ich kann endlich eine Online-Version veröffentlichen. Diese ist nun selber Teil des LOD Graphens: sie hat eine stabile URI, die Ressource wird über HTTP ausgeliefert, und sie enthält sogar ihre eigenen Metadaten, die die Ressource mit anderen LOD Knoten verknüpft. Das alles ist sehr leicht herstellbar, da es eine HTML Ressource mit RDFa ist. Zum Anzeigen der Metadaten in Turtle kann z.B. der Distiller verwendet werden:

http://www.w3.org/2012/pyRdfa/extract?uri=http://www.dr0i.de/lib/pages/Datenanreicherung_auf_LOD_Basis.html

Die Online-Version kann in Kleinigkeiten geändert werden, z.B. durch Fehlerbereinigung, Formatierungsverschönerungen und Zufügen kleinerer, erläuternder Textbausteine. Es gibt aber keine Versionierung. Das ist ein von mir aus Bequemlichkeitsgründen vertagtes Problem, prinzipiell aber lösbar.

Write a book review using schema.org and RDFa . A HTML fragment useful as a template to generate Linked Open Data

I want to write reviews of the books I recently read. I want these reviews to be

  1. Open Data as CC0
  2. Linked Open Data
  3. Using schema.org

As I could not find a web app for doing this (e.g. you can’t write reviews at Open Library)
I thought to do this using my own blog. And it’s easy enough. That
is, if you ever wrote HTML by hand. It is kind of 90ties – but
then, the internet was nicer in those days (no ads, no spam, no flash,
lesser javascript, lesser tracking, no PRISM … ok I stop this
nostalgia nonsense now).  Here is how it’s done.

Prerequisites:

Using a fairly uncommon blog software named pebble
I was’nt too surprised that RDFa is not supported in any way. But the
software allows me to input HTML source blocks. And that’s all you
need to write a review using schema.org vocabulary and RDFa.

To be able to use Linked Open Data (LOD) , we need other LOD so that we can link them. I read a german edition of Lamentation by Ken Scholes
. Sadly, I wasn’t able to find that manifestation as LOD – but hey
: it is Open Library, and I can simply add the missing resource by my
own! Which I did. Thus creating “http://openlibrary.org/books/OL25430867M” (btw I added the “about the book” description and some tags at the work level of the manifestation.)

Why RDFa and not microdata ?

Because RDFa is as simple as microdata but far more powerful.

How to ?

I inserted the following HTML fragment:


<div vocab="http://schema.org/" typeof="WebPage Review" about="http://www.dr0i.de/lib/2013/09/14/ken_scholes_sndenfall.html">
   This is a review about
<a property="itemReviewed" href="http://openlibrary.org/books/OL25430867M/">
   'Ken Scholes: Lamentation'.
</a>
<span property="reviewRating">
   2
</span>
   stars. Written by
<a property="author" href="http://lobid.org/person/pc">
   dr0i
</a>
<span content="2013-09-14" property="publishDate">
   on September 2013
</span>
<span property="reviewBody" xml:lang="en">
   The setting of the book .... blah ... reminds me of
<a property="citation" href="http://viaf.org/viaf/52700">
   Paulo Coelho
</a>
   ... it should not be recommended by
<a href="http://libraryjournal.com/" property="citation" >
   library journal
</a>
</span>
</div>

The first line is necessary to indicate that the schema.org
vocabulary is used and that’s a webpage with one review. The review is
explicitly given the URI using “about” – so this becomes the “subject”
of the triples. This is not needed, because as default the URI of the webpage of the review is taken – and they are the same.
(There may occur situations when you need to distinct between the thing
you want to talk about and the thing you talk with , e.g. providing
metadata for an other webpage or non-webpage , or having a list of
reviews where each review has it’s own website (to be able to make
statements about each single review.))

You can understand the HTML fragment above on your own if you
lookup the URIs : suffix the value of the “property” attribute to the
vocab url “http://schema.org/”,  thus e.g. you get “http://schema.org/reviewBody
. The HTML attribute “property” can be used in HTML tags: you may use
the link tag “<a>” when you link something or the “<span>”
tag if you just want make literal statements. Having literals it makes
sense to give them language tags, e.g. ‘xml:lang=”en”‘. 

Now, have a look at http://www.dr0i.de/lib/2013/09/14/ken_scholes_sndenfall.html to see how it renders for you. And what does a machine see, say google? Let us use a tool from the W3C, the “Distiller”, showing us the turtle notation of the underlying RDF:

@prefix cc: <http://creativecommons.org/ns#> .
@prefix dc: <http://purl.org/dc/terms/> .
@prefix rdfa: <http://www.w3.org/ns/rdfa#> .
@prefix schema: <http://schema.org/> .
<http://www.dr0i.de:80/lib/> cc:license <http://creativecommons.org/publicdomain/zero/1.0/>;
    dc:creator <http://lobid.org/person/pc>;
    rdfa:usesVocabulary schema: .
<http://www.dr0i.de/lib/2013/09/14/ken_scholes_sndenfall.html> a schema:Review, schema:WebPage;
    schema:author <http://lobid.org/person/pc>;
    schema:citation <http://libraryjournal.com/>,
        <http://viaf.org/viaf/52700>;
    schema:itemReviewed <http://openlibrary.org/books/OL25430867M/>;
    schema:publishDate "2013-09-14";
    schema:reviewBody "The setting ..."@en;
    schema:reviewRating "2".

Nice and clearly structured, semantics all clear, isn’t it ? If you think so – you are probably a machine ! 0110100001101001 !

Btw, of course you are allowed to use RDFa anywhere in your webpage.
Pebble uses an info box about the blog on the upper right side, and
nothing prevents you from pasting some HTML in there. We have tow
statements here about the whole blog: 1. the license of the content and
2. the author of the blog .

Now, I am not totally happy with that. For me, it is not the writing
of RDFa and HTML by hand, but that the source of the webpage looks
something like a mess and it is not really valid RDFa in HTML. Rapper, a
nice tool for working with RDF, rejects the parsing of the RDFa in this
webpage. But by using Distiller, we can get the RDF even by command
line (and remember: Distiller is coming from the W3C, so this RDFa is
“valid enough” to serve it’s purpose):

$ curl http://www.w3.org/2012/pyRdfa/extract?uri=http://www.dr0i.de/lib/2013/09/14/ken_scholes_sndenfall.html

So this is good enough for me. I will go on writing book reviews
using the template above. For more information, examples and tutorials
see http://schema.rdfs.org (yes, the site is a little bit outdated, but none the less helpful, since the schema.org examples still only shows microdata, (you can see with a glimpse that it is microdata when the “itemprop” attribute is used instead of “property”)), even if microdata may be discontinued.

Kurzreview zu Ken Scholes’ “Sündenfall”

Kurzrezension zu ‘Ken Scholes: Sündenfall’.2/5 Sterne von dr0i, September 2013.
Das Setting ist eigentlich spannend, und die Karte in der Buchklappeninnenseite läd auch zum Träumen ein. Doch die Geschichte plätschert so dahin, die Figuren sind vorhersagbare Stereotypen, genauso wie die Entwicklung der Geschichte kaum überrascht. Die Motivation vieler Charaktere finde ich nicht überzeugend. Schön ist, dass es nicht viele Threads (also parallel laufende Handlungsstränge) gibt – es sind nur eine Handvoll, immer aus der Perspektive der Hauptakteure erzählt und immer auf der gleichen Zeitachse. Dieser wohltuenden Einfachheit wird aber nichts Komplexes entgegengesetzt – im Gegenteil: teilweise reflektieren die Personen die soeben erzählte Geschichte nochmal und nochmal, allzuoft ohne dabei eine wirklich andere Perspektive einzunehmen – und damit wird das Ganze noch langweiliger. Irgendwas an dem Buch erinnert mich an Paulo Coelho, vielleicht ist es die Naivität die nervt. Vielleicht auch nur das sich öfter wiederholende Motto des klerikalen Ordens ‘Veränderung ist der Pfad, den das Leben einschlägt.’ – neben anderen Allgemeinplätzen. Und nur, weil im Mittelpunkt die (eine einzige, zentralisierte) Bibliothek steht, sollte es nicht gleich vom library journal mit dem Prädikat “unentbehrlich für jede Bibliothek” ausgezeichnet werden.

Was liefert ein URN Resolver

Wie gelange ich an das Dokument, das durch ein URN identifiziert ist?

EDIT 2013-04-03: Nur einen Tag, nachdem ich den Post hier geschrieben habe, ist der DNB Dienst umgestellt worden. http://nbn-resolving.org/urn:nbn:de:gbv:3:1-2762 liefert nun standardmäßig das Dokument, zumindest über den Browser (über wget oder curl wird momentan HTTP status code 503 “Service Temporarily Unavailable” geliefert). Allerdings ist das Verhalten bei einer anderen URN anders – http://nbn-resolving.org/urn:nbn:de:gbv:3:1-60274 bringt die Verweisseite. Da ist wohl grad Baustelle. Mal sehen, wie lange ;) .Die URL des Resolvers http://nbn-resolving.org/ bringt nun eine Liste, wo der Benutzer aussuchen kann, ob er die Verweisseite haben will oder das Dokument.

Es gibt die Ansicht, dass z. B. http://nbn-resolving.org/urn:nbn:de:gbv:3:1-2762 den URN richtig auflöst, da erfolgreich eine Liste aller in der DNB registrierten URLs zurückgeliefert werden. HTTP Code 200 sei daher vollkommen richtig.
Es gibt die andere Ansicht, dass http://nbn-resolving.de/urn:nbn:de:gbv:3:1-2762 richtig ist, weil es direkt die Ressource liefert mitsamt korrekten HTTP Codes (302->303->200).

So, wie es http://nbn-resolving.org/ macht, finde ich es schlecht.
So, wie es http://nbn-resolving.de/ macht, finde ich es richtig.

Diese Ansicht ist durch folgendes begründet:
Laut RFC 2169 (->”URN to URL”) sollte nicht HTTP Code 200 geliefert werden, sondern erstmal ein HTTP Code 30x auf die Ressource.
In der Wikipedia steht:

A URN resolver is responsible for initiating and sequencing the queries
that ultimately lead to a full resolution (translation) of a URN name or a
“resolution request”, e.g., a request for translation of a URN name into
a URL.

Genau diese Aufgabe,

“liefern eines URL für einen URN”

kann automatisiert umgesetzt werden, eben mittels HTTP Headern. Es könnte auch anders gehandhabt werden, mittels einer API. http://nbn-resolving.org/ leistet dies nicht, http://nbn-resolving.de/ hingegen schon.

Auch “Architectural Principles of Uniform Resource Name Resolution” unterstützt meine Ansicht:

This document addresses the issues of the discovery of URN (Uniform
Resource Name) resolver services that in turn will directly translate
URNs into URLs (Uniform Resource Locators) and URCs (Uniform
Resource Characteristics).

Es geht also um die “direkte Übersetzung eines URN in einen URL”. “Direkt” verstehe ich als “automatisiert” – und nicht, möglicherweise eine Liste aller Links zu anderen URLs zu liefern, die der Benutzer intellektuell auswerten muss um den passenden Hyperlink zu finden und diesem dann zu folgen.
Weiter heißt es:

The term “resolver” is used in this document to indicate a service that
translates URNs to URLs (Uniform Resource Locators) or URCs (Uniform
Resource Characteristics). Some resolvers may provide direct access to
resources as well.

Die Frage ist: ist es aureichend, wenn dieser URL lediglich manuell erreichbar ist, oder sollte ein URN Resolver sich nicht selber darum kümmern und den URL des Dokumentes liefern?

Es gibt mindestens drei verschiedene Möglichkeiten, was mich erwartet, wenn ich einen URN in ein Resolvingsystem eingebe:

Ressource: Ich bekomme die Ressource, die durch den URN definiert ist
Metadaten: Ich bekomme Metadaten, die die Ressource beschreiben (also meist eine HTML-Seite)
Verweis: Ich bekomme eine HTML-Liste mit Verweisen auf (mehrere) URLs

Da diese 3 verschiedenen Antworten jeweils den gleichen HTTP-Header liefern (Status Code 200), kann maschinell nicht erkannt werden, um welche der Möglichkeiten es sich bei dem URL, den der URN-Resolver zurückgibt, handelt. Das macht einen URN-Resolver für maschinelle Arbeiten, z.B. um Mashups in Portale einblenden zu lassen, untauglich. Er taugt lediglich zum einfachen “Backlink” – eine alte, auch im Vascoda-Portal umgesetzte und gescheiterte Idee, da die Benutzerunfreundlichkeit stark leidet durch die ständigen Portalbrüche (Verlassen des ursprünglichen Rechercheportals, um (hier z.B.) in einem URN-Resolver weiterzuklicken) und den damit u.a. verbundenen (vermeidbaren!) Zeitaufwand (Benutzer sind schon lange besseres gewöhnt, z.B. durch die Internetsuchmaschinen).

Punkt 3) zeigt zudem, dass der oft zu lesende Vergleich von URN-Resolver und DNS basierte Namensauflösung unstimmig ist, denn ein DNS löst den Namen maschinell auf und führt maschinell zum richtigen Ziel. Ein URN-Resolver dagegen kann offenbar dagegen auch lediglich manuell interpretierbare Verweise (Liste in Html) zurückliefern, und es gibt keine Möglichkeit für eine Maschine, den Unterschied zu erkennen. Somit ist die maschinelle Verarbeitung von URNs unmöglich.

Ambivalenz – maschinelle Nicht-Entscheidbarkeit zum Zustand einer URN-Resolver-URL
Beispiel: Jenachdem, welchen Resolver ich anspreche, erhalte ich Unterschiedliches – bei gleicher URN:
http://nbn-resolving.org/urn:nbn:de:gbv:3:1-60274 liefert die Verweisseite,
http://nbn-resolving.de/urn:nbn:de:gbv:3:1-60274 liefert die Ressource
- und das, ohne maschinelle Möglichkeit der Diskriminierung dieser doch gänzlich andersartigen Inhalte der URLs.

URN-Resolver vs. Linked Data

Ich setze das Linked-Data-Paradigma gegen den URN-Resolver, damit klarer wird, was technisch möglich ist:

Ich bekomme die Ressource. HTTP Status Code 200.
Metadata: z.B. qua Redirect (HTTP-Status-Code 303) (es gibt andere Mechanismen). Daten maschinell interpretierbar.
Liste: qua Redirect (HTTP-Status-Code 303) geht es zu den Metadaten, in denen dann maschinenlesbar eine Liste mit synonymen Identifieren hinterlegt ist (“owl:sameAs”)

Mein Fazit:
Da URN Resolver aus Maschinensicht inadequat sind, sollten sie durch Linked Data cool URIs ersetzt werden.

Thomas Bernhard: Auslöschung – ein Zerfall

Thomas Bernhard: Auslöschung – ein Zerfall

kleine Buch-Rezension

Kurzbewertung Thomas Bernhard: Auslöschung – ein Zerfall von dr0i vom 6. März 2012.
Beschreibung: Reflektionen eines
österreichischen Dichters über die Rolle der eigenen Familie und des
Dorfes während des 3. Reiches und der Zeit danach. Lange, sehr präzise
Sätze. Der Inhalt besteht aus vielen Wiederholungen, Permutationen,
Rekursionen – das nervt und ist aber ein passendes Stilmittel um den
ganzen Trist klar zu machen. (Achtung, Spoiler ab hier):
Erst im drittletzten Satz des Buches kommt es zur überfälligen Katharsis.

Bewertung:3,3 (von 5,0)