Closed mchlrch closed 6 years ago
Zusammenfassung der Besprechung mit @sszscm.
Beispiel Rumänien: Rumänien taucht als Ausprägung für mehrere Dimensionen auf (u.a. Heimatland, Herkunft, Geburtsland).
Bei Texteingabe Rumänien in der Vorschlagssuche werden folgende Tags als Kandidaten angeboten:
Heimatland
, Herkunft
, Geburtsland
Rumänien
, Europa
, Ausland
Ausprägungen als Tag und Teil des Suchfilters behandeln:
Rumänien
, Europa
und Ausland
als Kandidaten für Ausprägungen angeboten.Zusätzliche Wechselwirkung mit den Dimensionen-Kandidaten der Vorschlagssuche:
Heimatland
, Herkunft
und Geburtsland
als Kandidaten für Dimensionen angeboten.
Eine Dimension kann somit über mehrere Wege zum Kandidat werden, einerseits über direkten Match (über Label oder Notation) oder indirekt über Match einer Merkmalsausprägung.Es gibt mehrere Merkmalsausprägungen für Rumänien:
HEL8232
(Heimatland)
HER8232
(Herkunft)
HDM8232
(Heimatland der Mutter)
GEL8232
(Geburtsland)
Für die Suche möchten wir aber nur ein Tag Rumänien
haben, nicht vier verschiedene Tags welche alle den Text Rumänien haben. Das Tag Rumänien
repräsentiert also mehrere Merkmalsausprägungen (1:n).
Entweder müssten wir in den Daten ein Gegenstück zum Tag Rumänien
synthetisieren und mit den bestehenden Merkmalsausprägungen in Beziehung setzen, oder wir können es erstmal billiger lösen, indem wir nur mit dem Labeltext arbeiten%0A++FILTER+(regex(ENCODE_FOR_URI(%3Flabel1)%2C+'%5ERum%25C3%25A4nien'))%0A++%0A++BIND(ENCODE_FOR_URI(%3Flabel1)+AS+%3FattributeValue1)%0A%7D+%0A%0ALIMIT+20&contentTypeConstruct=text%2Fturtle&contentTypeSelect=application%2Fsparql-results%2Bjson&endpoint=http%3A%2F%2Fld.integ.stadt-zuerich.ch%2Fquery&requestMethod=POST&tabTitle=Query+31&headers=%7B%7D&outputFormat=table).
Nur mit dem Labeltext zu arbeiten würde bedeuten, dass es für die Tags der Merkmalsausprägungen in der Suche keine IDs gäbe, sondern dieses neue AttributeEntity
neben label und score nur einen attributeValue=Rum%C3%A4nien
hätte.
Dieser attributeValue=Rum%C3%A4nien
wäre dann auch Request-Parameter beim Aufruf der Dataset-API, wenn man das Tag Rumänien
angeklickt hat.
@sszscm Ich schlage vor mit dieser günstigeren Variante zu starten und in einem ersten Schritt die Hierarchie der Ausprägungen sowie die Wechselwirkung mit den Dimensionen-Kandidaten noch wegzulassen.
günstige Variante ok. Abschätzen, was "Folgen" sind der günstigen Variante. Eventuelle Nachteile bei dieser Lösung (keine eindeutige ID für "Konstrukt" etc.) abschätzen sobald Weiterentwicklung ansteht.
Ist im Backend umgesetzt. Die beiden APIs /tags/
und /dataset/
haben einen zusätzlichen Parameter attributeValue
erhalten.
Beispiel Vorschlagssuche Brasilien:
/tags/?query=Brasil
liefert folgende Response.
{
"@type": "Collection",
"member": [
{
"@type": "Attribute",
"score": {
"@type": "http://www.w3.org/2001/XMLSchema#float",
"@value": "10.0"
},
"attributeValue": "Brasilien",
"label": "Brasilien"
}
]
}
Merkmalsausprägungen sind mit "@type": "Attribute"
gekennzeichnet. Der Wert von attributeValue
wird genutzt, wenn das entsprechende Tag ausgewählt wurde.
/dataset/?attributeValue=Brasilien
liefert entsprechend die Datasets, welche die Merkmalsausprägung Brasilien enthalten.
Im /tags/
API habe ich zwei Limitierungen eingebaut, um die Anzahl Merkmalsausprägungen in einem vernünftigen Rahmen zu halten:
1) Die Vornamen aus GEB-RAUM-ZEIT-NAF-NAM-SEX werden ignoriert.
2) Die Anzahl Merkmalsausprägungen im Resultat sind auf 42 begrenzt (können wir noch anpassen)
@sszscm @surfiend Für die entsprechenden Anpassungen im Frontend braucht es vermutlich noch einen neuen Issue im stip-frontend.
Die Tags der Merkmalsausprägungen sollen nur in der Auswahl angezeigt werden, die aufklappt sobald bei der Vorschlagssuche Text eingegeben wird - nicht aber unterhalb des (eingeklappten) Suchfelds.
Das Suchen nach Ausprägungen, z.b. „Rumänien“ führt zu den Datensätzen, welche die Länder behandeln und Rumänien auch vorkommt.
Gehört zu Suche ausbauen (#104)