# Gibts auch Triple?



## pktm (17. Aug 2008)

Hallo!

Es gibt ja den Datentyp Pair. Ich hätte gerne Triple. Gibts das auch?
Wenn ja, wo und wie?

Grüße, pktm


----------



## Marco13 (17. Aug 2008)

???:L  "pair" kenn ich nur von C++ - In Java müßte man sich den, und somit auch Triple, vermutlich selbst schreiben - außer wenn man bei einer Websuche zufällig eine frei verfügbare Implementierung findet....


----------



## pktm (17. Aug 2008)

Na, das scheint bei den Standard-Dingen dabei zu sein.

Egentlich brauche ich mehr so etwas baumartiges, perforamntes, das man ohne weiteres serialisieren kann, für Datenstrukturen der Art:
key => complex value
key => other key => complex value
key => other key => damn 3th key => complex value

Ich habe alle drei Fälle.


----------



## Marco13 (17. Aug 2008)

Mir ist's immernoch nicht klar. Du willst also entweder EINEN oder ZWEI oder DREI Keys auf ein Value abbilden? Im Sinne von

("KeyA", null, null) -> ValueA
("KeyB", "KeyC", null) -> ValueBC
("KeyD", "KeyE", "KeyF") -> ValueDEF

???
Oder  ???:L  (Und wenn ja, was ist daran "baumartig"?)


----------



## Ark (17. Aug 2008)

@pktm: Am besten, du erklärst uns nicht, _wie_ du etwas machen willst, sondern _was_ du machen willst. Mir scheint nämlich, als wäre schon der Ansatz etwas umständlich/falsch.

Ark


----------



## SchonWiederFred (17. Aug 2008)

pktm hat gesagt.:
			
		

> Es gibt ja den Datentyp Pair. Ich hätte gerne Triple. Gibts das auch?


Keine Ahnung, was Du genau willst, aber wenn Du ein Pair(x, y) bilden kannst, dann kannst Du doch ein Triple(x, y, z) durch ein Pair(x, Pair(y, z)) oder ein Pair(Pair(x, y), z)) simulieren.


----------



## SlaterB (17. Aug 2008)

nicht, wenn x, y und z nur String sein dürfen


----------



## SchonWiederFred (17. Aug 2008)

Ich würde ja sonst einfach ein dreielementiges Arrays nehmen, aber ich habe keine Ahnung, was der OP überhaupt will.


----------



## pktm (17. Aug 2008)

Ja, ich hab jetzt auch ein Tripple aus 2 Pairs gebildet.

Das zu erklären, was ich machen will, hilft glaube ich nicht sonderlich viel weiter, aber ich versuche es mal.

Ich erstelle ein System zum Cachen von Ergebnissen, die von Anfragen an eine Ontologie kommen.
Die Anfragen richten sich nach einer eigens dafür implementierten Anfragesprache.
Elemente einer Anfrage können die Frage nach Konzepten oder Eigenschaften von Konzepten in der Ontologie sein.
Sowohl Konzepte als auch EIgenschaften können einem Namensraum zugeordnet werden.
Es ergeben sich folgende KOmbinationen von Anfragemöglichkeiten:
a) Konzept
b) Namensraum mit Konzept
c) Eigenschaft & Wert
d) Namensraum mit Eigenschaft & Wert

Um jetzt den Cache zu erstellen brauche ich Datenstrukturen, in der ich die bestandteile der Anfragen und deren Ergebnisliste speichern kann. Da die einzelnen Bestandteile der Anfrage recht frei benannt sein können möchte ich mich nciht auf Stringmanipulationen verlassen, und bin deshalb zur Trennung der Bestandteile durch Datenstrukturen übergegangen.

Es gibt daher einen Cache für alle Konzepte, der aus einer einfachen Map<String,X> besteht. X ist eine spezielle Klasse für die Ergebnisse.
Jetzt brauche ich das aber auch noch für b): Namensräume mit Konzepten. Da hab ich ne Map<Pair<String,String>,X> genommen.

Und dann gibt es das ganze noch für die Eigenschaften, zu denen immer noch ein Wert gehört. Ergebnis sich also nochmal ein Cache aus Map<Pair<String, Pair<String,String>>,X>, übersetzt: Map<Pair<Namensraum,Pair<Eiogenschaft,Wert>>,Ergebnis>.

Das ganze muss serialisierbar sein. Arrays als Schlüssel für ne Map funtkionieren übrigens nicht, das hab ich schon getestet.

Schön wäre daher, wenn ich eine Baumstruktur hätte, in der ich folgendes ablegen kann:

```
Cache (Wurzel)
    => Konzepte
    => Eigenschaften
        -> Werte von Eigenschaften
    => Namensräume
        -> Konzepte
        -> Eigenschaften
            * Werte von Eigenschaften
```

Das ist dann eine Baumstruktur.

Bislang hab ich einfach mehrere Hashtabels, die die einzelnen Dinge beinhalten. Abhängig von der Anfrage weiß ich, welche ich davon benutzen muss. Und ich kann die Sache so wie sie im Moment aussieht serialisieren.

Grüße, pktm


----------



## pktm (17. Aug 2008)

Tjo... hat sich erledigt. Da Pair wohl doch nicht so serialisierbar war wie ich dachte, gibts jetzt ne einfache Hashmap mit geeigneten Keys.


----------

