StatistikStadtZuerich / stat.stadt-zuerich.ch

API Backend for the linked open statistical data of the Municipality of Zurich
Other
0 stars 0 forks source link

Suche nach Ausprägungen im Tags-API #33

Closed mchlrch closed 6 years ago

mchlrch commented 6 years ago

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)

mchlrch commented 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:

Ausprägungen als Tag und Teil des Suchfilters behandeln:

Zusätzliche Wechselwirkung mit den Dimensionen-Kandidaten der Vorschlagssuche:

mchlrch commented 6 years ago

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.

sszscm commented 6 years ago

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.

mchlrch commented 6 years ago

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)

mchlrch commented 6 years ago

@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.