• Nie Znaleziono Wyników

Szczegółowy  opis  składowych  ASM PA  –  Personal  Agent

W dokumencie Index of /rozprawy2/10252 (Stron 98-105)

Aspekty  bezpieczeństwa

LMS SERVICE

3.3.2.       Moduł  Zaawansowanego  Wyszukiwania  (ASM)

3.3.2.2.       Szczegółowy  opis  składowych  ASM PA  –  Personal  Agent

Personal Agent to agent reprezentujący użytkownika. Każdy użytkownik który uzyskuje dostęp do systemu posiada jedną instancję tego agenta którego zadanie polega na obsłu-­‐ dze użytkownika. Nie mam możliwości dostępu do systemu z pominięciem agenta osobi-­‐ stego. Jeśli użytkownik posiada konto agent po zalogowaniu wczytuje ustawienia danej osoby. W przypadku użytkownika niezalogowanego agent bazuje na ustawieniach domyślnych, a funkcjonalność wyszukiwania jest znacznie zredukowana np. brak perso-­‐ nalizacji. Agent automatycznie aktualizuje ustawienia konta użytkownika w momencie wylogowania które również automatycznie nastąpi po 30 minutowym okresie nieaktyw-­‐ ności. Po przygotowaniu zapytania agent decyduje w jakiej formie i którym agentom wyszukującym je przekazać. Uzyskane wyniki napływają od agentów SA w sposób asyn-­‐ chroniczny. PA na bieżąco przesyła uzyskane wyniki wyszukania do agenta RA który przekazuje mu spersonalizowane informacje odnośnie znalezionych obiektów LO. Końcowe wyniki są gromadzone i dostępne u agenta PA do czasu kolejnego zadania zapytania. Użytkownik zatem po zadaniu zapytania nie musi czekać na wynik wyszuki-­‐ wania  lecz  wynik  może  uzyskać  po  ponownym  zalogowaniu  się  do  Systemu.  

PA stanowi klasę Javy opartą na klasie Agent platformy JADE implementującą interfejsy  tworzące  jego  funkcjonalność  Agenta  w  Systemie  ABSS  –  tabela  19.

Aby powołać do życia instancję agenta osobistego należy wywołać statyczną metodę

lookupPersonalAgent.  Metody  statyczne  oznaczono  niebieskim  kolorem.

Tabela 19: Interfejsy  agenta  PA

metody  interfejsu opis

initializePersonalAgentInterface shutdownPersonalAgentInterface

Celem  jest  przygotowanie  agentów  osobistych  poprzez  nawią-­‐ zanie  połączenia  z  bazą  proWili  użytkowników  DB_USERS,  a   także  pobranie  z  tabel  DB_LOMS  struktur  opisujących  słowniki   systemu  ABSS  w  celu  szybkiego  ich  stosowania.

lookupPersonalAgent

(String  personalAgentName)

Poszukuje  i  zwraca  referencję  do  agenta  używając  jego  unikal-­‐ nej  nazwy.  Jeśli  agent  nie  zostanie  odnaleziony  powoływana   jest  nowa  instancja.

killPersonalAgentIfExists

(String  personalAgentName) Agent  o  danej  nazwie  jest  niszczony  o  ile  zostanie  odnaleziony.

createUser

(UserSettings  userSettings)

Metoda  zakłada  nowe  konto  użytkownika.  Klasa  UserSettings   stanowi  DAO  (Data  Access  Objects)  wykorzystywany  w  J2EE   do  tworzenia  odpowiednich  rekordów  w  bazie  DB_USERS. Obiekt  ten  zawiera  kompletną  informację  o  użytkowniku   wymaganą  przez  system  ABSS.

validateUserLogin (String  username,  String  password)

Służy  do  autoryzacji  użytkownika  w  systemie;  zwraca  ustawie-­‐ nia  konta  użytkownika  w  przypadku  sukcesu  (UserSettings)

getUserSettings()

Zwraca  ustawienia  użytkownika  w  imieniu  do  którego  przypi-­‐ sany  jest  dany  agent  osobisty  lub  “null”  dla  użytkownika  anoni-­‐ mowego  (niezalogowanego  w  Systemie).

addRequest(Request  request)

Dodaje  nowe  zapytanie  (request)  do  listy  zapytań  obsługiwa-­‐ nych  przez  PA  w  imieniu  użytkownika.  PA  odpowiada  za  wybór   odpowiednich  SA  i  przekazanie  im  zapytania  z  żądaniem   wyszukiwania  obiektów  LO  zgodnych  z  zapytaniem.

Lista  dostępnych  w  systemie  agentów  szukających  jest  pobie-­‐ rana  poprzez  usługę  platformy  JADE  DF.  

getCurrentRequests() getCurrentRequestsCount()

Zwraca  Obiekt  klasy  Vector  zawierający  ciąg  zapytań   (Requests)  lub  ich  liczbę  aktualnie  obsługiwanych  przez  PA dla  danego  użytkownika.

removeRequest(Request  request) removeAllRequests()

Przekazuje  informację  do  agenta  PA,  że  użytkownik  nie  jest   zainteresowany  dalszym  danym  wyszukiwaniem  (Request).

metadataSelected (int  metadataId) metadataRanked

(int  metadataId,  int  rank) metadataDownloaded (int  metadataId) metadataAddedToFolder   (int  metadataId,    Folder  folder) metadataRemovedFromFolder (int  metadataId,  Folder  folder)

Lista  metod  służących  przekazaniu  za  pośrednictwem  agenta   PA  agentowi  RA  informacji  o  czynnościach  wykonanych  przez   użytkownika  (zarówno  jawnych  jak  i  niejawnych)  dla  konkret-­‐ nego  opisu  LO.

addStoredRequest (Request  request) deleteStoredRequest

(long  requestId) getStoredRequests()

Metody  przeznaczone  dla  zarejestrowanych  użytkowników   służące  wyszukiwaniu  w  trybie  ofWline.  

W  przypadku  znalezienia  wyników  użytkownik  każdorazowo   będzie  informowany  o  nich  za  pomocą  poczty  elektronicznej.

getAvailableSearchMethods()

Zwraca  listę  (obiekt  klasy  Vector)  opisów  metod  wyszukiwaw-­‐ czych  dostępnych  w  systemie.  Celem  jest  umożliwienie  użyt-­‐ kownikowi  wskazanie  które  metody  wyszukiwania  mają  być   użyte  do  realizacji  zapytania  (Request).

Opis  kluczowych  klas  i  sposoby  ich  wykorzystania  przedstawiono  w  kolejnych  sekcjach.

UserSepngs

Klasa wykorzystywana przy tworzeniu nowego konta użytkownika oraz pobieraniu informacji o istniejącym koncie użytkownika. Dane są pobierane każdorazowo z bazy danych DB_USERS po zalogowaniu użytkownika do systemu i zapisywane w momencie zakończenia pracy przez agenta osobistego. Klasa przechowuje informacje o użytkow-­‐ niku i zawiera następujące pola: username (unikalna nazwa ustawiana tylko w momencie zakładania konta), password, firstName, middleName, lastName, gender, email, birthYear,

yearOfEducation, nativeLanguage, spokenLanguages (oba pola zawierają wartości ze słow-­ nika opisującego języki),countryOfBirth, countryOfEducation (oba pola zawierają wartości ze słownika nazw krajów),interests,profesionalInterests(oba pola zawierają wartości ze słow-­

nika ETB – LRE Thesaurus),favourites,courses(obiekty klasy Folder),userType(informacja czy jest  to  konto  ucznia,  nauczyciela  czy  innego  typu  osoby).

Folder

Klasa opisuje tzw. folder metadanych, czyli miejsce do którego można wstawiać obiekty reprezentujące metadane (obiekty klasy Metadata), zapytania (obiekty klasy Request) oraz  inne  obiekty  klasy  Folder.

Każdy użytkownik może utworzyć swoją strukturę folderów i nadać jej nazwę oraz opisać jej przeznaczenie oraz ponadto kategorię (używając wartości z LRE Thesau-­‐ rus), a w przypadku nauczycieli również kategorię wiekową reprezentującą docelową grupę  użytkowników  kursu  w  którym  wykorzystywane  będą  elementy  danego  folderu.

Istnieje jeden folder domyślny (tzw. root folder) przechowywany w PA który stanowi  bazę  struktury  folderów  tworzonych  przez  użytkownika.

ZdeWiniowano następujące metody tworzące funkcjonalność Folderu – dla metadanych:

getMetadata(), addMetadata (Metadata metadata), deleteMetadata(long metadataId); dla zapytań:getRequests(),addRequest (Request request),deleteRequest (long requestId); w celu przeglądania struktury:getParentFolder(),getSubfolders(),addSubfolder(Folder folder),  deleteFolder(Folder  folder).

Request

Klasa ta reprezentuje pojedyncze zapytanie użytkownika. Każde zapytanie jest powią-­‐ zane z użytkownikiem (poprzez jego PA) oraz wynikami zapytania (ciąg wyników repre-­‐ zentowany  przez  Vector  obiektów  klasy  Result).

Klasa Request dziedziczy z serializowanej klasy RequestQuery wykorzystywanej przy przesyłaniu zapytań do agentów wyszukujących SA. Zapytanie wymaga przesłania tekstu reprezentującego zapytanie – konstruktor Request(String queryString) (tekst odpowiada polu:queryTitle. Wartość tę można zmody\ikować po utworzeniu obiektu wywołując metodę:  setQueryTitle(String  queryTitle)).

Można uszczegółowić charakter zapytania ustawiając jego parametry (odpowied-­ nie pola) za pomocą publicznych metod. Można wskazać autora, słowa kluczowe czy przeznaczenie – pola:queryAuthors,queryKeywords,queryDescriptioni odpowiadające im metody: setQueryAuthors(String queryAuthors), setQueryKeywords(String queryKey-­‐ words),  setQueryDescription(String  queryDescription).

Przeszukiwanie można zawęzić wprowadzając ograniczenia co do języków natu-­‐ ralnych stosowanych dla opisu zasobów czy samych zasobów (metody odpowiednio:

setLanguages(java.util.Vector<Language> languages))setResourceLanguages(java.util. Vector<java.lang.Integer> resourceLanguagesIds)); do określonego zakresu dla wieku, rozmiaru zasobów LO, daty utworzenia – pola:ageMin,ageMax,sizeMin,sizeMax,contribu-­‐ tedBefore, contributedAfter i metody im towarzyszące w kolejności:setAgeMin(Integer ageMin), setAgeMax(Integer ageMax), setSizeMin(Integer sizeMin), setSizeMax(Integer sizeMax), setContributedBefore(java.util.Date contributedBefore), setContributedA-­‐ fter(java.util.Date contributedAfter); uwzględnieni opłat i restrykcyjności – pola:

costs i restrictions i metody kolejno: setCosts(Boolean costs) i setRestrictions( Boolean restrictions); uwzględnienia konkretnych formatów i typów LO (setFormats( java.util.Vector<java.lang.Integer> formatsIds) i setResourceTypes(java.util.Vector <java.lang.Integer> resourceTypesIds)); przeznaczenia LO (setEndUserRoles(java.

util.Vector<java.lang.Integer> endUserRolesIds) i setResourceLearningContexts(java. util.Vector<java.lang.Integer>  resourceLearningContextsIds)).

Wyszukiwanie można ograniczyć podając maksymalną liczbę zwracanych wyni-­‐ ków: setMaxResultsCount(int maxResultsCount), czy wskazać konkretne metody wyszu-­‐ kujące które mają zostać zastosowane:setSearchMehods(java.util.Vector<SearchMethod> searchMehods).

System wyszukiwania wspiera rozszerzenia S2QL (utworzono nowy języka zapy-­‐ tań XS2QL – eXtended S2QL). Wprowadzone rozszerzenia umożliwiają stosowanie operatorów logicznych “OR” i “AND” w zapytaniu – więcej w sekcji: „Nowe języki zde\inio-­

wane  i  obsługiwane  przez  system  wyszukiwania”  (str.  108).

Użytkownik ma możliwość wprowadzić domyślne ustawienie dla zapytania tzw.

globalMergeMode (setGlobasMergeMode(RequestQuery.MergeMode mergeMode)) oznaczający w praktyce czy poszukujemy obiektów spełniających wszystkie parametry zapytania lub spełnienie choć jednego z nich. Przy czym jako spełnienie danego pojedynczego „para-­‐ metru” traktujemy sukces wyrażony przez znalezienie zasobów w których występuje ten dany parametr. Sam parametr wyszukiwania może być złożony z listy pojedynczych skła-­‐ dowych jak na przykład lista słów kluczowych. Wprowadzono także dodatkową możli-­‐ wość wskazania czy opisane powyżej spełnienie pojedynczego „parametru zapytania” oznacza spełnienie wszystkich jednostkowych wartości z jego listy czy choć jednego. Realizacja dokonuje się poprzez ustawienie warunków logicznych dla elementów list. Służą do tego następujące metody: setQueryTitleMergeMode(RequestQuery.MergeMode queryTitleMergeMode), setQueryAuthorsMergeMode(RequestQuery.MergeMode queryAuthor-­‐ sMergeMode), setQueryKeywordsMergeMode(RequestQuery.MergeMode queryKeywordsMerge-­‐ Mode), setQueryDescriptionMergeMode(RequestQuery.MergeMode queryDescriptionMerge-­‐ Mode), setEndUserRolesMergeMode(RequestQuery.MergeMode endUserRolesMergeMode), set-­‐ FormatsMergeMode(RequestQuery.MergeMode resourceFormatsMergeMode), setLreThesauri-­‐ ItemsMergeMode(RequestQuery.MergeMode lreThesauriItemsMergeMode), setResourceLan-­‐ guagesMergeMode(RequestQuery.MergeMode resourceLanguagesMergeMode), setResource-­‐ LearningContextsMergeMode(RequestQuery.MergeMode learningContextsMergeMode) i set-­‐ ResourceTypesMergeMode(RequestQuery.MergeMode  resourceTypesMergeMode).

Tworzenie zapytania bez podawania jego parametrów jest również możliwe przy zastosowaniu  jednej  z  poniższych  metod:  

1.  buildMetadataBasedSimilarityRequest(java.util.Vector<Metadata>  similarMetadata)

stanowi implementację podejścia QBE (ang. Query By Example) i pozwala użytkowni-­‐ kowi wyszukiwać zasoby podobne do przykładów umieszczonych w wektorze. Jej zada-­‐ nie polega na wyszukaniu wszystkich podobieństw pomiędzy metadanymi i stworzenie zapytania  mającego  wspólne  cechy  wszystkich  metadanych  z  listy.

2.  getOtherUsersOpinionBasedSimilarityRequestAndResults(UserSettings  userSettings,                    java.util.Vector<java.lang.Long>  lomsIds,

                   int  maxResultsCount)

metoda ta wykorzystuje informacje zgromadzone w folderach użytkownika traktując dodane obiekty do folderów jako obiekty podobne, a następnie tworzy zapytanie uwzględniając  dodatkowo  obiekty  z  listy  lomsIds  (o  ile  są  one  podane).

Uzyskane wyniki wyszukiwania (podejście asynchroniczne oznacza, że wyniki spływają od wielu agentów wyszukujących i mogą zmieniać się w czasie do chwili kiedy

wszyscy agenci zakończą proces wyszukiwania) mogą być przedstawiane użytkowni-­‐ kowi na różne sposoby. Sposób przedstawienia wyników stanowi realizację dopasowań według zadanych kryteriów – implementację fragmentu koncepcji przedstawionej w  sekcji:  „Propozycja  systemu  wyszukiwania  spersonalizowanego”  (str.  53).

Za  realizację  odpowiedzialne  są  poniższe  metody:

getResultsOrderedByQueryConformityAvg(...)

getResultsOrderedByQueryConformityAvg(java.util.Hashtable<String,Integer>  methodsWeights) methodsWeights  –  tablica  hashująca.  jej  kluczem  jest  nazwa  metody,  a  liczba  reprezentuje   w  procentach  wagę  „dopasowań  do  zapytania”  wyników  tej  metody

getResultsOrderedByQueryConformityMax()

Wyniki są sortowane według dopasowań do zapytań przy czym jeśli więcej niż jeden agent wyszukujący dostarczy ten sam obiekt lecz z inną wartością dopasowania do zapy-­‐ tania  różne  strategie  są  stosowane  przy  wyliczeniu  ostatecznej  wartości  dopasowania;

getResultsOrderedByPopularity(UserOpinionType16  userOpinionType)  

sortowanie  wg  popularności  obiektu  czyli  liczby  pobrań  i  oglądnięć;

getResultsOrderedByProfileConformity(UserSettings  userSettings)  

dopasowanie obiektu do proWilu użytkownika(brane pod uwagę są języki “spoken languages”, wiek  oraz  zainteresowania);

getResultsOrderedByRanks(UserType17  ranksOfUserType)  

sortowanie  po  ocenach  przypisanych  obiektom  poprzez  daną  kategorię  użytkowników;

getResultsOrderedBySimilarUsersEvaluation(UserSettings  userSettings,        UserSimilarityType18  userSimilarityType,  

       UserOpinionType16  userOpinionType,  UserType17  userType)

Wykorzystuje zaimplementowane metody CF. Na podstawie zadanego typu CF (wartość

UserSimilarityType) oraz typu użytkownika (wartość UserType) brane pod uwagę będą tylko odpowiednie typy klasteryzacji, a następnie wg polaUserSettings znaleziony jest klaster do którego przypisany jest dany użytkownik. Sortowanie uwzględnia dopasowa-­‐ nie wyników do klastra poprzez średnią ocenę nadaną obiektom przez użytkowników danego  klastra.

getResultsOrderedBySearchMethod()  

Metoda pozwala posortować listę wyników wg metody wyszukiwawczej. Nie następuje scalanie wyników. Celem jest zarówno prezentacja skuteczności konkretnych metod wyszukujących oraz możliwość kalibracji wag stosowanych w metodziegetResultsOrde-­‐ redByQueryConformityAvg  używanej  przy  scalaniu  wyników.

Realizacja scalenia wyników pochodzących od różnych agentów wyszukujących, czy jako wynik końcowy podsystemu wyszukującego oraz podsystemu personalizującego ma miejsce poprzez zastosowanie poniższych metod realizujących scalanie dwóch list wyni-­‐ ków  w  oparciu  o  różne  średnie  ważone  (arytmetyczną  i  geometryczną).

Metody  te  to:

16. abss.userInterface.UserOpinionType  przyjmuje  jedną  z  5  wartości:  downloading,  labelling,  

ranking,  viewing  lub  any.

17. abss.userInterface.UserType  przyjmuje  jedną  z  3  wartości:  learner,  teacher  lub  other.

18. abss.userInterface.UserSimilarityType  przyjmuje  jedną  z  3  wartości:  behaviour,  profile   lub  both.

mergeResults(java.util.Vector<Result>  firstResults,  byte  firstResultsWeight,

       java.util.Vector<Result>  secondResults,  byte  secondResultsWeight)

mergeResultsGeometricMean(java.util.Vector<Result>  firstResults,  byte  firstResultsWeight,

       java.util.Vector<Result>  secondResults,  byte  secondResultsWeight)

Wynikiem jest ciąg (Vector) wyników nie zawierający zduplikowanych metadanych gdzie ostateczne dopasowanie “conformity” stanowi średnią arytmetyczną lub geome-­‐ tryczną  wartości  wcześniejszych.

Result

Obiekty jej klasy są zwracane jako lista (obiekt klasy Vector). wyniki zapytania nie zawierają konkretnych metadanych lecz indeksy (polemetadataId) reprezentujące meta-­‐ dane w tabelach bazy DB_LOMS. Ponadto zawierają zestandaryzowaną wartość z prze-­‐ działu: [0,100] oznaczającą w % stopień dopasowania wyniku do zapytania (pole

queryConformityPercent).

W klasie zaimplementowano dwie metody służące otrzymaniu metadanych reprezento-­‐ wanych  przez  pole  metadataId:

getMetadata()  –  zwraca  obiekt  klasy  Metadata  zawierający  dane  pochodzące  z  DB_LOMS

getMetadataXML(FireXMLResultFormat  xmlResultFormat)  –  zwraca  opis  metadanych   w  zadanym  formacie  (FireXMLResultFormat)  i  jest  używany  przez  interfejs  SQI

Metadata

Obiekty  jej  klasy  służą  do  opisania  metadanych  przechowywanych  w  DB_LOMS.  

ZdeWiniowano metody pozwalające na odczyt wartości stosownych pól, a w szczególno-­‐ ści: educationalDescription(Language language), getDescription(Language language),

getRightsDescription(Language language)(zwracają przeznaczenie LO jako tekst w zadanym języku o ile opis taki oczywiście istnieje), getUrl() (zwraca adres domyślnej lokalizacji LO),

getAdditionalUrls() (zwraca listę redundantnych lokalizacji LO), getAgeMax(), getAgeMin()

(pola zwracają wartości wskazujące na docelową grupę wiekową danego LO), getAuthors()

(autorzy / twórcy LO),getAvailableLanguages()(lista języków dla których dostępne są warianty LO), getLanguages() (lista języków dla których istnieją opisy LOM), getClassification()

(opisują kategorię zasobów poprzez wartości ETB – LRE Thesaurus), getKeywords(Language language) (lista słów kluczowych), getResourceEndUserRoles(), getResourceFormats(),

getResourceTypes(), getResourceLearningContexts(), getTitle(Language language),

getSize(),isCosts(),isRights() zwracają wartości związane z polami reprezentującymi konkretne  wartości  zgodnie  ze  standardem  LRE  2.0  /  IEEE  LOM  (tabela  18  –  str.  95).

Ponadto wprowadzono też metody związane z realizacją wyszukiwania spersona-­‐ lizowanego, a w szczególności: getDownloadCount(), getSelectCount() (dla liczby pobrań i oglądnięć), getRankAverage(), getRankLearner(), getRankTeacher() (reprezentują oceny nadane przez użytkowników systemu) oraz getRankLearnerCount() i getRankTeacherCount()

(liczba  ocen).

DAOs

Obiekty DAO (ang. Data Access Objects) są używane tylko wewnątrz metod agenta osobi-­‐ stego. Użyte klasy DAO dziedziczą z klasy PrototypeDAO która obsługuje komunikację z bazą danych mySQL. Wszelkie operacje na danych bazy nie są wykonywane bezpośred-­‐ nio na bazie lecz poprzez odpowiednie obiekty DAO. ZdeWiniowano następujące klasy: FireXMLResultFormat,  ResourceEndUserRoleDAO,  ResourceLearningContextDAO,  i  UserSettingsDAO.

JadeContainerController

Klasa używana tylko przez narzędzia administratora. Służy do monitorowania pracy agentów. Pozwala tworzyć i usuwać agentów oraz włączać/wyłączać usługi wyszukiwania.

Vocabularies

System wykorzystuje tabele słownikowe stanowiące część bazy DB_LOMS zawierające wartości zdeWiniowane przez standardy LRE 2.0 / IEEE LOM (tabela 18 – str. 95). Dane słownikowe  są  pobierane  przy  starcie  platformy  agentowej  z  tabel  DB_LOMS  (tabela  20). Utworzono szereg klas reprezentujących podstawowe tabele słownikowe prze-­‐ chowywane w tablicy statycznej. Klasy te wywodzą się zVocabularyItem wprowadzonej w celu ujednolicenia operacji ładowania danych słownikowych oraz prezentację warto-­‐ ści  słownika  w  zadanym  języku  narodowym  (getNameTranslation(Language  language)). Tabele te to: Country, Language, ResourceEndUserRole, ResourceFormat, ResourceLearning-­‐ Context  i  ResourceType.

Wprowadzono także obsługę ETB – LRE Thesaurus (tabela 21). Realizacja poprzez klasę ThesaurusItem w której zdeWiniowano metody pozwalające na poruszanie się po strukturze thesaurusa (getParents(),getChildren(),getRelated(), getSynonyms(),

getSimilar(int similarityLevel),isSimilar(ThesaurusItem comparedItem),getSimilari-­‐ tyLevel(ThesaurusItem  comparedItem)).

Tabela 21: Tablice  DB_LOMS  przechowujące  wartości  ETB  –  LRE  Thesaurus

W dokumencie Index of /rozprawy2/10252 (Stron 98-105)