\section{Suodatin (EM, TR)} \label{jar} Suodatinmoduuli toimii välittäjänä käyttöliittymä- ja metatietomoduulien välillä, järjestäen ja suodattaen käyttöliittymän tarvitsemaa tietoa 'älykkäästi' saatavilla olevan muun tiedon mukaan. Olioiden järjestely tehdään utiliteettifunktioilla (=hyödyllisyysfunktio/kiinnostavuusfunktio). Jokainen utiliteettifunktio palauttaa käsitteellisesti väliltä 0.0-1.0 olevan arvion parametrina saadun olion kiinnostavuudesta (nopeussyistä arvo palautetaan kokonaislukuna 0-65535). Kokonaisutiteetin laskemiseksi useita utiliteettifunktioita ketjutetaan yhteen eri painoarvoilla ja niistä laskettu yhteisutiliteetti normalisoidaan taas välillä 0-65535, jolloin ketju muodostaa taas utiliteettifunktion. \subsection{Rajapinnat} \label{jar_raj} Ainoa suodattimen rajapinta on käyttöliittymään, jolle suodatin tarjoaa mahdollisuuden mielenkiintoisten linkkien, näytettävien kuvien ja HiBrowse-käyttöliittymän fasettien järjestämiseen. Rajapinnan käyttöliittymään muodostaa luokka Filter. \begin{figure} \begin{center} \includegraphics[width=1.0\textwidth]{Jarj_luokuvaus.eps} \end{center} \end{figure} \subsection{Rajapintametodit} Kaikki rajapintametodit palauttavat mielenkiintoisuusfunktion arvon (väliltä 65535-0) mukaan laskevaan järjestykseen järjestetyn taulukon kysytyistä objekteista. Tehokkuussyistä joillekin metodeille voidaan antaa parametriksi maksimimäärä max, joka määrää, kuinka monta oliota palautustaulukkossa maksimissaan saa olla. Taulukosta jätetään pois tietysti aina huonoimman utiliteettiarvon saaneet oliot. \subsection*{public Vector of InterestingLink getInterestingLinks(String ImageId, Profile, int max)} Hakee ja palauttaa johonkin kuvaan liittyvät mielenkiintoiset linkit, järjestäen ne annetun profiilin ja muiden saatavilla olevien tietojen mukaan kiinnostavuusjärjestykseen. Metodi palauttaa maksimissaan max-alkioisen mielenkiintoisuusfunktion arvon (väliltä 65535-0) mukaan laskevaan järjestykseen järjestetyn taulukon. \textbf{Alustus:} Image=MuseumModel.getImage(ImageId); InterestingLinks.linkname=Image.getProperties(); InterestingLinks.Image=Image.getProperties().getLinkedImages(); \textbf{Utiliteettifunktioketju:} \textbf{InterestingLinkGlobalAccessCountUtilityFunction} linkin klikkausten maara/suosituimman linkin klikkausten maara Property.getAccessCount() / MuseumModel.getImagePropertyAccessCountMaximum(); \textbf{InterestingLinkImageLinkAccessCountUtilityFunction} linkin klikkausten maara/kuvan suosituimman linkin klikkausten maara Property.getAccessCount() / max(Image.Property.getAccessCount()); \textbf{InterestingLinkFacetUtilityFunction} kuinka hyvin linkki sopii viimeisiin valideihin fasettivalintoihin 1 / (MuseumModel.getImageDistance(Image,Profile.getStateOfHiBrowse())+1); \textbf{InterestingLinkImageAccessCountUtilityFunction} montako kertaa linkin kohdekuvaa/kohdekuvia on klikattu suhteessa suosituimpaan kuvaan Image.getAccessCount() / MuseumModel.getPopularImages(1).getAccessCount(); \textbf{RandomUtilityFunction} palauttaa sattumanvaraisen utiliteetin \subsection*{public Vector of InterestingOntologyClass getFacetRoots(Profile);} Hakee ja palauttaa fasettien juurisolmut mielenkiintoisuuden/käytetyimmyyden mukaan järjestettynä. MuseumModel.getFacetRoots(); \subsection*{public Image getImage(String imageId);} Palauttaa Image-olion kuvan id:n perusteella. MuseumModel.getImage(imageId); \subsection*{public Vector of InterestingImage getIntersectImages(OntologyClass,Profile);} Hakee ja palauttaa HiBrowse-valintoihin sopivat instanssit, mielenkiintoisyuuden/käytetyimmyyden mukaan järjestettynä. \textbf{Alustus:} MuseumModel.getImagesforInstances(OntologyClass.getIntersectionInstances(Profile.getStateOfHiBrowse().getActiveNodes())); \textbf{Utilititeettifunktioketju:} \textbf{ImageAccessCountUtilityFunction} montako kertaa kyseistä kuvaa on katseltu suhteessa järjestelmän suosituimpaan kuvaan. Image.getAccessCount() / MuseumModel.getPopularImages(1).getAccessCount(); \textbf{RandomUtilityFunction} palauttaa sattumanvaraisen utiliteetin \subsection*{public Vector of InterestingOntologyClass getFacetChildren(OntologyClass, Profile);} Hakee ja palauttaa fasettisolmun lapset mielenkiintoisyuuden/käytetyimmyyden mukaan järjestettynä. \textbf{Alustus:} children=Ontologyclass.getChildren(); \textbf{Utilititeettifunktioketju:} \textbf{FacetNodeUseAmountUtilityFunction} montako kertaa kyseistä fasettinoodia on käytetty suhteessa suosituimpaan fasettiin \textbf{RandomUtilityFunction} palauttaa sattumanvaraisen utiliteetin OntologyClass.getAccessCount() / MuseumModel.getPopularFacets(1); \subsection*{public Vector of InterestingImage getDefaultImages(Profile, int max);} Hakee ja palauttaa käyttäjälle oletuksena näytettävät kuvat yleisen mielenkiinnon/käytetyimmyyden mukaan järjestettynä. MuseumModel.getPopularImages(max); \subsection*{public class InterestingImage} public Image getImage();\newline public bool setImage();\newline public int getUtility();\newline public bool setUtility(int); \subsection*{public class InterestingOntologyClass} public OntologyClass getOntologyClass();\newline public bool setOntologyClass();\newline public int getUtility();\newline public bool setUtility(int); \subsection*{public class InterestingLink} public Image getImage();\newline public bool setImage(Image);\newline public String getLinkName();\newline public bool setLinkName(String);\newline public int getUtility();\newline public bool setUtility(int);