Rdf-baasi lisaülesanne

Allikas: Lambda

Lisaülesandeid on tegelikult kaks: vali ise, kumb rohkem meeldib. Ühe lahendamine annab ühe punkti. Kahe lahendamine annab ikka kokku ühe punkti.

Esimene lisaülesanne

Põhiülesandes on öeldud, et päringus ei saa olla rohkem, kui üks lisatingimus. Näiteks,

      myrdf "omabsumma andmed.csv where id=2 and tyyp=maja"

sisaldab ühe lisatingimust tyyp=maja

Realiseeri päring selliselt, et lisatingimusi võib olla kuitahes palju, näiteks:

     myrdf "omabsumma andmed.csv where id=2 and tyyp=maja and varv=kollane and asukoht=tallinn

Arusaadavalt peab päringu lahendamisel (tulemuse rehkendamisel) kõiki neid lisatingimusi arvestama.

Samuti mõtle välja, kuidas kirjutada taolisele ükskõik-kui-paljude lisatingimustega päringule vastav funktsioon, mis peab sisendiks samuti saama kuitahes palju lisatingimusi. Üks võimalik lahendus on panna lisatingimused funktsiooni jaoks massiivi, st funktsioon võtaks üheks argumendiks lisatingimuste massiivi.

Teine lisaülesanne

Põhiülesanne rehkendab omanduse summat niimoodi, et

  • vaatab, mis objekte isik omab
  • liidab eelnevalt leitud objektide hind-väärtused

Selline skeem ei arvesta võimalust, et omatav objekt võib ise omada asju. Konkreetse näitena võib Jaan omada maja, osaühingut ja aktsiaseltsi. Osaühing omab omakorda autot. Aktsiaselts omab aga teist osaühingut, mis omakorda omab kahte maja. Jaan omab seega kokku autot ja kolme maja, mille hinnad saaks edukalt kokku liita.

Ülesande sisuks on laiendada põhiülesande omanduse-rehkendust selliselt, et liidetaks kokku omandused (st nende hind-väärtused) kõigis omanduse-ahelates, ükskõik kui sügavad ja kui palju neid ka poleks. Mõistlik viis selle ülesande lahendamiseks on kirjutada rekursiivne omanduste liitmise funktsioon: iga omatava objekti peal lastakse sama rekursiivne funktsioon uuesti käima.