Implementare RDF

Pentru a transforma Tezaurul dintr-un concept teoretic într-o utilitate publică funcțională, avem nevoie de o infrastructură digitală capabilă să gestioneze volume masive de date și, mai ales, să modeleze nuanțele complexe ale adevărului. Această soluție se bazează pe un „registru istoric global” construit pe mai mulți piloni tehnici.

Propunem o bază de date de tip graf (ex: Apache Jena + Fuseki), folosind standarde deschise W3C (RDF-star, OWL2) și ontologii internaționale, standardizate (Popolo, FOAF, Org, PROV-O, etc), augumentate pentru specificul tezaurului.

1. Vocabularul de nuanțare

Folosim ontologii standard (precum prov: pentru proveniență sau foaf: pentru persoane), dar le augmentăm cu un vocabular specific de tip SKOS pentru a defini valoarea de adevăr. Acest lucru permite sistemului să catalogheze precis nuanțe precum „susține”, „contestă”, „alegă” sau „pune la îndoială”, oferind contextul necesar pentru a demonta dezinformarea în timp real.

2. Nivelul fizic: time-sharding imutabil

Pentru a evita blocajele de performanță (unde mii de surse ar încerca să actualizeze același subiect simultan), stocarea nu se face pe „articole”, ci pe segmente temporale imutabile.

  • La fiecare 6 ore, sistemul generează un nou graf denumit (ex: <graph:ingest-2025-01-01T1200>) unde sunt scrise toate datele nou introduse în baza de date.
  • Sistemul este de tip append-only: nu ștergem niciodată informație. Dacă o afirmație se dovedește falsă, scriem o tripletă de corecție în segmentul temporal curent care indică spre eroarea din trecut.

3. Nivelul semantic: RDF-star și „ceapa conceptuală”

Provocarea majoră este modelarea afirmațiilor despre alte afirmații (ex: „Reuters raportează că Ambasadorul X se îndoiește de acuzația Rusiei”). Folosim RDF-star, o extensie modernă care permite tratarea unei relații întregi ca pe un obiect, fără a crea o explozie de noduri inutile în baza de date. Modelul urmează straturile unei „cepe conceptuale”:

  • Stratul 0: Afirmații de bază pe care le considerăm absolut adevărate (ex: a apărut un articol în presă)
  • Stratul 1: Afirmații despre afirmații conținute în stratul 0 (ex: articolul de presă îl citează pe Ambasadorul X)
  • Stratul 3: Afirmații despre afirmații conținute în stratul 1 (ex: articolul de presă îl citează pe Ambasadorul X punând ceva la îndoială)
  • … și tot așa, de oricâte ori este nevoie
@prefix : <http://tezaur.ro/data/> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .

# --- ONTOLOGIE ȘI TAXONOMIE (definiții) ---
:reports
	a owl:ObjectProperty ;
	skos:prefLabel "raportează"@ro .

:states
	a owl:ObjectProperty ;
	skos:prefLabel "afirmă"@ro .

:questions
	a owl:ObjectProperty ;
	skos:prefLabel "pune la îndoială"@ro .
	
:attacks
	a owl:ObjectProperty ;
	skos:prefLabel "atacă"@ro .

# --- DATE FACTUALE COMPLEXE (adâncimea recursivă) ---
# Exemplu de "ceapă conceptuală" cu 4 straturi
# Stratul 0 (relația exterioară, adevăr nemijlocit): Reuters raportează
<< :Reuters :states
    # Stratul 1: Afirmația ambasadorului (îndoiala)
    << :AmbasadorX :questions
        # Stratul 2: Autorul afirmației disputate
        << :Rusia :states
            # Stratul 3: Afirmația originală a Rusiei
            << :Ucraina :attacks :ResedintaPutin >>
        >>
    >>
>>
    prov:wasDerivedFrom <https://www.reuters.com/article-id> .
Exemplele de pe această pagină au numai rol ilustrativ pentru capacitățile conceptuale ale tehnologiei; în practică graful va fi mult mai complex și va conține mult mai multe nuanțe, date și metadate.

4. Arhitectură flexibilă

Un aspect critic al sistemului este capacitatea de a distinge între fapte și aserțiuni. Acest lucru ne permite să gestionăm atât scenarii simple de forma „vreau o fișă biografică a ambasadorului X” cât și scenarii de auditare a istoriei în vederea investigațiilor de tip „Kompromat” sau „Zombie News”, unde o sursă originală (ex: Reuters) corectează o greșeală, dar o sursă de propagandă (ex: Sputnik) menține știrea falsă activă, iar interogarea se mută de la fapte la istoria afirmațiilor.

Pentru a atinge aceste obiective fără a „murdări” faptul în sine (care este un nod partajat), aplicăm retractarea pe tripla exterioară (relația dintre Sursă și Fapt).

Exemplu: Reuters afirmă inițial că „Ambasadorul e la Paris”. Sputnik preia știrea. Ulterior, Reuters retractează (a fost o eroare materială; ambasadorul e de fapt la Londra), în vreme ce Sputnik publică noi articole despre presupusul amant al ambasadorului de la Paris, fără să retracteze vreodată știrea originală.

# --- SEGMENT TEMPORAL T0 (lansarea știrii) ---

# Faptul atomic (inner triple): << :AmbasadorX :locatesIn :Paris >>
# Acesta este un singleton logic în baza de date.

# Reuters susține faptul
<< :Reuters :states << :AmbasadorX :locatedIn :Paris >> >>
    prov:generatedAtTime "2025-01-01T08:00:00"^^xsd:dateTime .

# Sputnik susține același fapt
<< :Sputnik :states << :AmbasadorX :locatedIn :Paris >> >>
    prov:generatedAtTime "2025-01-01T08:05:00"^^xsd:dateTime .


# --- SEGMENT TEMPORAL T1 (retractarea) ---

# Reuters invalidează propria aserțiune.
# NOTĂ: Nu ștergem datele din T0. Adăugăm o meta-proprietate pe tripla Reuters.
<< :Reuters :states << :AmbasadorX :locatedIn :Paris >> >>
    :retractedAt "2025-01-02T10:00:00"^^xsd:dateTime .

# Sputnik NU face nicio acțiune. Aserțiunea lor rămâne activă (fără :retractedAt).

Această arhitectură permite ambele tipuri fundamentale de interogări:

  1. Fișa biografică (adevărul curent): Interogarea filtrează automat orice aserțiune care are proprietatea :retractedAt. Rezultatul: Reuters dispare din listă, iar faptul „Paris” este susținut doar de Sputnik (care poate avea un scor mic de încredere), deci poate fi marcat ca fals/improbabil.
  2. Analiza de dezinformare (istoricul): Interogarea compară prov:generatedAtTime cu :retractedAt. Rezultatul evidențiază discrepanța: Reuters a corectat eroarea, în timp ce Sputnik propagă o informație anunțată ca fiind falsă de către sursa originală.

5. Indexarea: graful director

Pentru a răspunde rapid la întrebări precum „Ce a spus Politicianul X în ultimii 10 ani?”, fără a scana terabytes de date, folosim un graf director. Acesta funcționează ca un index secundar care conține „semnale” de existență: el indică algoritmului în mod exact care „segmente temporale” conțin entitățile căutate, optimizând masiv interogările.