Oder anders gefragt, was können die Editoren, etc. noch vernüftig parsen?
Es ist nämlich sehr schwer leichte Parsebarkeit (Programmen wird im Zweifelsfall immer genau gesagt wonach sie suchen müssen) mit Allgemeingültigkeit (der Tag kann auch für sich alleine stehen), sowie die richtige Abblidung der Abstraktionsebenen (wenn der Tag in eine sehr spezifissche Unterkategorie fällt, sollte man auch einen Treffer bekommen, wenn man nach der Überkategorie des Tags sucht) unter einen Hut zu bekommen, wie ich gerade feststelle.
Leider finde ich da keine Empfehlungen oder Hinweise dazu.
Ich arbeite ja gerade an Healthcare 2.0, hier mal ein Konkretes Beispiel dazu:
Will man maximale Kombinierbarkeit der Tags, macht man spezifische Tags wie:
health_care:person:physician=yes
das läßt sich dann leicht mit
health_care:person:therapist=yes
kombinieren, weil es gibt ja z.B. Psychiater, die sind gleichzeitig noch Psychotherapeut.
Da ist nur die Frage, ist die Software schnell in der Lage, vernüftig herauszufinden, nach welchem Objekttyp, in diesem Falll “person” sie zu suchen hat?
Aus meiner Sicht nein, weil da muß man eine Substringsuche für alle Keys machen um den Objekttyp zu finden! Andererseits empfehlen Leute, auch zu recht, daß man überflüssige Redundanzen und Hilfstags zur Abbildung der Taghierarchie, die ohne wirklichen Mehrwert für den Menschen sind, nicht benutzen sollte, was ja an sich auch berechtigt ist. Weil mit dem Hilfstag
health_care=person
Weis die Software sofort wonach zu suchen ist, nur hat der Tag keinen informationellen Mehrwert, da die information ja auch schon im spezifischeren Subtag health_care:person:*=yes steht. Soll man so etwas trotzdem benutzen, auch wenn der die Mapper da im Editor mehr schreiben müssen, damit die Software nicht per Substringsuche alle möglichen Werte für die Subkeys ausprobieren muß in der Hoffnung etwas passendes zu finden? Aus meiner bisherigen Sicht denke ich da ja.
Das Problem was mit der tollen Kombinierbarkeit der binären (*=yes/no) Tags einher geht, ist neben dem Vergeuden von Rechenzeit für die Substringsuche (das wird bei mehreren Namespaces dann erst richtig lustig!), auch das die Objektbeziehungen unter Umständen nur unzureichend wiedergegeben werden.
Beispiel: Jemand definiert:
health_care:speciality=haste_nicht_gesehen_surgery=yes
Um der allgemeinen Kombinierbarkeit zu entsprechen, definiert man nur health_care:speciality=* obwohl das ja klar eine health_care:subspeciality=* ist, nämlich von health_care:speciality:surgery=yes bzw. um das Substringdurchduchproblem zu umgehen und dafür die freie Kombinierbarkeit einzubüßen, mit health_care:speciality=surgery. Mit Relationen ist das ja keine Problem, da amcht man notfalls mehre, aber wie löst man so etwas für normale Knoten/Wege/Flächen? Weil bei mehrenen Fachgebieten in health_care:speciality=* geht da dann ja wieder das Substringsuchproblem los, auch wenn man die Tags alphabetisch sortiert, ist das nicht wirklich eine Lösung.
Außerdem sieht jemand health_care:speciality=haste_nicht_gesehen_surgery=yes ja vielleicht zu recht als völlig ausreichend an, aber die Anwendung möchte dann vielleicht alle Chirurgen haben und sucht nach health_care:speciality:surgery=yes, ohne dafür wisslen zu müssen, welche noch so kleinen Fachunterscheidungen da gemacht werden. Das spricht dafür auch health_care:speciality:surgery=yes definieren zu müssen, nur damit man das auch findet, wenn man nach der übergeordneten Abstraktionsebene sucht, mal abegesehn davon, das Abstraktionsebenenbezug dabei verloren geht.
Hat jemand da Ideen oder Hinweis wie man so etwas sinnvoll für Nicht-Relationen lösen kann?
Namespaces im Key bzw. mehrere Werte im Value sind imho nur gut für den Menschen, aber nicht für die Software, die die Daten auswerten soll.