\section{Järjestelmän yleiskuvaus (SS)}
\label{osajärj}

Tässä luvussa käsitellään \wwwm-järjestelmän komponentit
yleisellä tasolla. Luvussa \ref{järjYleis} käsitellään
järjestelmän ohjelmalliset komponentit ja 
luvussa \ref{pakkaukset} näiden jakautuminen 
Javan pakkauksiin. Luvuissa \ref{sisälOnt}, \ref{kuvakortit} 
ja \ref{sisOnt} käsitellään järjestelmän tietosisältö 
(metadata).

\subsection{Käyttöliittymä (SS)}

Käyttöliittymä jakautuu kahteen osaan: moniryväshakuun (HiBrowse) 
ja kuvasivuun.

\subsubsection{HiBrowse}

\subsubsection{Kuvasivu}

\subsection{Apuohjelmat (SS)}

Järjestelmän sisäisessä toteutuksessa on käytetty seuraavia ohjelmia,
jotka tulee olla asennettuna koneelle, jolla järjestelmää ajetaan.

\begin{description}
\item[Jena (+Xerces)]
Jenaa käytetään RDF-muotoisten metadatakuvausten lukemiseen, käsittelyyn
sekä tallentamiseen. Jenaa käyttetään vain metadata-pakkauksessa, 
joka tarjoaa korkeamman tason rajapinnan metatietoverkkoon:
Jenalla voi käsitellä vain RFD-kolmikoita 
\texttt{<subjekti, predikaatti, objecti>}. 
Metadata jaottelee käsiteltävissä olevat yksiköt 
luokkiin, näiden ilmentymiin, attribuutteihin sekä 
kuvauksen kohteisiin (kuvat) ja tarjoaa toiminnallisuuden
näiden välisten suhteiden ja ominaisuuksien tarkasteluun.


\item[J2EE (vähintään JSP 1.1)]
Käyttöliittymä on toteutettu J2EE:llä.

\end{description}

Järjestelmän kehityksessä ja testauksessa on käytetty seuraavia
ohjelmia:

\begin{description}
\item[Apache]
WWW-palvelin. [\texttt{http://www.apache.org}]

\item[Tomcat]
Java Servlet/JSP-ajoympäristö. [\texttt{http://jakarta.apache.org/tomcat}]

\item[Protégé]
Protégé on ontologiaeditori, jota käytettiin 
testiaineiston sekä ontologioiden luomiseen. [\texttt{http://protege.stanford.edu}]

\item[ANT]
ANT:a käytettiin Make:n tavoin koodin sekä dokumentaatioiden 
kääntämiseen ja siirtämiseen loppusijoitus ympäristöön.
[\texttt{http://jakarta.apache.org/ant}]

\item[CVS]
Kaikki ohjelmaan liittyvät tiedostot, koodit sekä dokumentit
ovat CVS:ssä. CVS:stä löytyy myös ohjelman prototyyppi 1,
nimellä proto1. Ryhmän CVS:n juuri on TKTL:n verkkohakemistossa
\texttt{/home/group/wwwmuseo/cvsroot} ja sen käyttö 
vaatii kuulumista wwwmuseo-ryhmään.
[\texttt{http://www.cvshome.org}]
\end{description}

\subsection{Osajärjestelmät (SS)}
\label{järjYleis}

Tässä luvussa kuvataan \wwwm-järjestelmän Java-komponentit
yleisellä tasolla sekä näiden integraatio.

Ohjelmisto on jaettu neljään moduuliin, jotka edelleen jakautuvat
alimoduleiksi. Järjestelmän moduulit ovat Metatieto-, Suodatin-, 
Profiili- ja Käyttöliittymämoduuli. 

Näiden ohjelmamoduulien lisäksi 
järjestelmään kuuluu yleiskäyttöisiä Java 
Beans-
nimeämiskäytönnön mukaisia apuluokkia, joita käytetään
käyttöliitymän JSP-osan toteutuksessa. 
Java-pakkaukset on kuvattu luvussa \ref{pakkaukset}.

\subsubsection{Metatietomoduuli (SS)}

Metatietomoduuli on koko järjestelmän ydin ja tarjoaa 
rajapinnan ontologian käsittelyyn verkkona, joka koostuu 
luokista, ominaisuuksista, (luokkien) ilmentymista 
ja kuvauksen kohteista (kuvat).

\subsubsection{Suodatinmoduuli (SS)}

Suodatimoduuli lisää Metatietomoduulin tietosisältöön 
utiliteettiarvot.
Utiliteettiarvot perustuvat ontologiaverkon solmujen läheisyyteen, 
jota on mahdollista mitata esimerkkiksi suosituimmuuteen perustuen.
Suodatinmoduuli tarjoaa myös näihin utiliteettiarvoihin 
pohjautuvan ontologiaverkon solmujen järjestämispalvelun. 
Nimensä mukaisesti suodatinmoduuli tarjoaa myös mahdollisuuden 
suodattaa ei-toivottuja metatietoverkon solmuja pois.

\subsubsection{Profiilimoduuli (SS)}

Profiilimoduulin tietosisältönä on käyttäjäkohtainen profiili
ja tilatiedot, joita suodatin käyttää hyväksi utiliteetien laskemisessa ja
käyttöliittymä HiBrowsen toteutuksessa. 

\subsubsection{Käyttöliittymämoduuli (SS)}

Käyttöliittymämoduuli tarjoaa kaksi erilaista liittymää
ontologiapohjaisesti annotoitujen kuvien hakemiseen ja
katseluun sekä ylläpitää profiilia.


\subsubsection{Moduulijaon perustelut (SS)}

\subsubsection{Pakkaukset}
\label{pakkaukset}
Ohjelmakoodin eli Java-luokkien sijoittelu pakkauksiin (package)
ilmentää pääosin yllä kuvattua moduulijakoa.

\subsection{Sisällölliset ontologiat}
\label{sisälOnt}
Tässä tapauksessa Promootio-ontologia, mutta tämä on vaihdettavissa.

\subsection{Kuvakortit (SS)}
\label{kuvakortit}

\subsection{Sisäiset ontologiat (SS)}
\label{sisOnt}

Varsinaisen näyttelyn aihepiiriä kuvaavan ontologian lisäksi 
järjestelmä käyttää muutamia vain järjestelmän 
sisäiseen käyttöön tarkoitettuja ontologioita. 
Näiden ontologioiden avulla määritellään  
fasettien juuret, kuvatiedostojen tekniset tiedot 
ja ontologiaelementtien painot. 
Nämä ontologiaskeemat ovat muuttumattomia.

\subsubsection{Fasetti (RH)}
Fasettiontologia on tapa lukea ja tallentaa perusontologian fasettijuuriksi valitut solmut Jenan avulla.

\subsubsection{Kuvatiedosto (RH)}
Kuvatiedosto-ontologia on rakenteeltaan hyvin yksinkertainen. 
Siihen tallennetaan kuvien kuvatiedostojen tietoja. 
Kuvatiedostoja voi jokaisella kuvalla olla useampi, 
ja ontologiaan tallennetaan myös kuvatiedostojen teknistä tietoa. 
Kuvatiedoston teknisinä ominaisuuksina ovat tiedostonimi, 
perus-URL, korkeus, leveys, väritieto ja tiedostomuoto.

\subsubsection{Paino (RH)}
Paino-ontologia on myös rakenteeltaan yksinkertainen 
ja sitä käytetään järjestelmän ontologiaresurssien painojen 
lukemiseen ja tallentamiseen. 

\subsubsection{Arvio (SS)}
Kiinnitettyjä sisäisiä fasetteja on liikaa ja niitä on mahdollista
käsitellä yleisemmällä tasolla. 

\begin{description}
\item[Kuvatiedosto]
Tämän hetkinen toteutus kiinnittää kuvattavan asian kuvaksi ja
jos myöhemmin haluttaisiin lisätä näyttelyyn esimerkiksi videoita,
audiota tai dokumentteja, täytyy jokaiselle näistä tehdä oma
Item-tyyppinen (Java) käsittelijänsä. 

Dynaamisemman järjestelmästä saa antamalla mahdollisuuden 
määritellä erilaisia kuvattavia asioita (kohteita) ontologian avulla. 
Varsinaiset kohteet määriteltäisiin tällöin Item-luokan (RDFS)
aliluokkina. Jos kohteena on kuva, varsinaiset kuvat olisivat
Item-luokan perivan Image-luokan ilmentymiä. Näin ollen 
Kuvatiedosto-ontologia ei olisi enää järjestelmän sisäinen ontologia
ja periaatteessa korvattavissa. 
\end{description}