Salta al contingut principal

Format obert · Esborrany

ISOLDA

Indexed Subject-Ordered Linked Data for AI

Una manera d'escriure grafs de coneixement perquè els models de llenguatge —fins i tot els petits, que funcionen en un portàtil— els puguin llegir. Menys tokens que Turtle o JSON-LD, noms llegibles en comptes de codis opacs i sense perdre ni una sola dada pel camí.

Treball en curs, explicat amb honestedat. La versió 0.1 va complir dos dels seus tres objectius en un estudi preregistrat: no perd informació i és més barata, però encara no era tan precisa com el millor format estàndard. La versió 0.2 corregeix les causes i s'està validant ara. Publiquem els resultats bons i els dolents.

01 · El problema

Els grafs de coneixement s'escriuen per a màquines, no per a models de llenguatge

Cada cop més coneixement es publica en forma de graf de coneixement: el JSON-LD (s'obre en una finestra nova) amagat a gairebé qualsevol pàgina web, els catàlegs de dades obertes, Wikidata. La manera habitual de donar-ne un a un model de llenguatge és enganxar-lo al prompt com a text, normalment en Turtle (s'obre en una finestra nova) o JSON-LD.

Aquests formats es van dissenyar per a analitzadors sintàctics, que no es cansen mai i no endevinen res. Un model de llenguatge llegeix d'una altra manera, i es nota:

  • Són cars. Cada clau, prefix i claudàtor repetit és un token que pagues i un tros de finestra de context que perds.
  • Parlen amb codis. Les entitats s'anomenen amb identificadors com ex:o7 o @p3. Pregunta a un model petit per a qui treballa algú i sovint et respondrà el codi en lloc del nom.
  • Amaguen els recomptes. «Quants conjunts de dades té aquest catàleg?» vol dir comptar centenars d'afirmacions escampades, i els models compten malament.

El format importa més del que sembla. Investigadors de Google van trobar que canviar només la manera d'escriure un graf feia variar el rendiment dels models entre un 4,8 % i un 61,8 %, segons la tasca (Fatemi et al., ICLR 2024 (s'obre en una finestra nova)). Al banc de proves KG-LLM-Bench (s'obre en una finestra nova), els dos estàndards web van quedar a la cua:

Precisió mitjana per format a KG-LLM-Bench (resultats publicats)

  • JSON estructurat : 0,42
  • Llista d'arestes : 0,41
  • YAML : 0,41
  • Turtle : 0,35
  • JSON-LD : 0,34
Font: Markowitz et al., KG-LLM-Bench (2025), mitjana de tots els models i tasques. Turtle i JSON-LD van ser, a més, els prompts més cars: 8.171 i 13.503 tokens de mitjana, davant dels 2.645 de la llista d'arestes, que és barata però no pot representar RDF sense pèrdua.

Hi ha, doncs, un buit: els formats que conserven tot el que RDF pot expressar (enllaços, tipus de dades, idiomes) són els que els models llegeixen pitjor, i els que llegeixen millor en perden una part.

02 · La idea

Escriure el graf com un model llegeix una taula

ISOLDA conserva tot el que fa que RDF sigui RDF i només en canvia la disposició. El nom n'explica el disseny: cada entitat està indexada (Indexed) amb un identificador llegible, les afirmacions estan ordenades per subjecte (Subject-Ordered: totes juntes, una fila per entitat), són dades enllaçades (Linked Data: descodificar-les retorna exactament el mateix graf) i està escrit per a la IA (for AI).

Noms, no codis

Cada entitat s'identifica amb la seva pròpia etiqueta: «Opendata.cat», no ex:o7. Quan una pregunta vol saber on treballa l'Anna, la resposta ja és escrita al costat del seu nom.

Una fila per cosa

Tot el que se sap d'una entitat és en una sola línia, i les entitats del mateix tipus comparteixen una taula amb una sola capçalera. Sense claus repetides ni afirmacions escampades.

Els recomptes, escrits

Cada taula i cada llista diu quants elements té (Person[2], [5] a | b | …). Els models compten malament les llistes llargues; ISOLDA compta per ells.

Un glossari a mida

Cada document comença amb unes poques línies que expliquen només la notació que fa servir, perquè fins i tot un model petit sàpiga com llegir-lo.

Els mateixos quatre fets, de dues maneres

Dues persones i les organitzacions de què són membres. És una il·lustració simplificada, no la sortida exacta del codificador:

Turtle
@prefix schema: <http://schema.org/> .
@prefix ex: <https://example.org/> .

ex:p1 a schema:Person ;
    schema:name "Anna Puig" ;
    schema:memberOf ex:o7 .
ex:p2 a schema:Person ;
    schema:name "Pau Serra" ;
    schema:memberOf ex:o9 .
ex:o7 a schema:Organization ;
    schema:name "Opendata.cat" .
ex:o9 a schema:Organization ;
    schema:name "Sorensen.ai" .
ISOLDA
# Entities are grouped by type.
# `Type[N]{a, b}:` is a table of N entities, one per row;
#   the first cell is the entity id.
# A property ending in `>` links to another entity by its id.

@vocab http://schema.org/
@types Person 2, Organization 2

Person[2]{name, memberOf>}:
  Anna Puig, Opendata.cat
  Pau Serra, Sorensen.ai

Organization[2]{name}:
  Opendata.cat
  Sorensen.ai

El glossari d'ISOLDA està sempre en anglès, la llengua que els models entenen millor per a instruccions tècniques.

En Turtle, el model ha de saltar d'ex:p1 a ex:o7 i després buscar com es diu ex:o7. En ISOLDA, l'Anna Puig i Opendata.cat són a la mateixa línia.

I no perd res: la implementació de referència comprova que RDF → ISOLDA → RDF retorna un graf idèntic, amb IRI, tipus de dades, etiquetes d'idioma i nodes en blanc inclosos. La sortida és determinista, byte a byte.

03 · Què hem mesurat

Menys tokens, millors recomptes, noms que no es perden

Hem provat ISOLDA amb quatre models de pesos oberts que qualsevol pot executar —dos de petits (Qwen3 4B i Gemma 4 E4B) i dos de mitjans (Qwen3.8 27B i Gemma 4 31B)— amb el raonament desactivat, per mesurar com llegeix el format cada model.

Tokens necessaris per al mateix graf (com menys, millor)

  • TOON / JSON-LD : 12.075
  • JSON-LD : 11.127
  • Turtle : 11.058
  • ISOLDA : 8.702 · −21 %
Graf de desenvolupament: els 43 blocs JSON-LD de xaviviro.com, 810 triples, comptats amb el tokenitzador o200k. ISOLDA 0.1 amb les opcions per defecte, glossari inclòs. «TOON / JSON-LD» és TOON aplicat directament al JSON-LD; hi surt perquè els primers prototips d'ISOLDA en van partir.

Estalvi de tokens respecte de Turtle amb etiquetes, en un graf que no es va veure durant el disseny

  • Qwen3 4B : −20,3 %
  • Qwen3.8 27B : −25,9 %
  • Gemma 4 E4B : −28,6 %
  • Gemma 4 31B : −28,6 %
Prova confirmatòria preregistrada amb el catàleg de dades obertes de la Generalitat de Catalunya (DCAT, mostra de 1.292 triples). Tokens comptats amb el tokenitzador de cada model. L'objectiu preregistrat era un estalvi mínim del 15 %.

Els models petits deixen de respondre amb codis

La troballa més clara fins ara: els models petits responen amb l'identificador que veuen. Si els dones codis, responen codis; fins i tot els identificadors llegibles com sorensen-ai tornen com a resposta. Fer servir el nom de l'entitat com a identificador ho resol gairebé tot.

Preguntes de diversos salts encertades, de 14, segons com s'identifiquen les entitats

Qwen3 4B

  • JSON-LD : 11/14
  • Codis opacs : 3/14
  • Codis llegibles : 5/14
  • ISOLDA (noms) : 12/14

Gemma 4 E4B

  • JSON-LD : 12/14
  • Codis opacs : 8/14
  • Codis llegibles : 3/14
  • ISOLDA (noms) : 13/14
Proves pilot exploratòries amb el graf de desenvolupament, 14 preguntes de diversos salts congelades («qui és l'autor de…», «quina organització…»). Xifres petites i sense intervals de confiança: van orientar el disseny, no el demostren.

Comptar deixa de ser endevinar

Preguntes de recompte encertades, els quatre models junts (de 24)

  • Turtle : 12/24
  • JSON-LD : 13/24
  • ISOLDA : 22/24
Proves pilot exploratòries: 6 preguntes del tipus «quants X hi ha?» × 4 models, amb les mateixes preguntes congelades i la mateixa configuració. A la prova preregistrada amb DCAT es va mantenir: ISOLDA va encertar les 4 preguntes de recompte amb tots els models, i Turtle amb etiquetes no en va encertar cap.

04 · On va fallar

La primera prova de debò: bé en un graf, malament en l'altre

Estalviar tokens no és cap èxit per si sol, així que ISOLDA havia de complir tres criteris fixats per endavant: no perdre informació, ser més barat i entendre's almenys tan bé com el millor format estàndard. Després vam provar la versió 0.1 amb dos grafs que ningú no havia mirat durant el disseny: el catàleg de dades obertes de la Generalitat i els municipis de Catalunya a Wikidata.

No va perdre res i va ser més barat. Però en conjunt va ser significativament menys precís que Turtle amb etiquetes, amb els quatre models. El desglossament per graf mostra on:

Precisió global a la prova confirmatòria preregistrada (com més, millor)

Gemma 4 31B · DCAT

  • JSON-LD : 91 %
  • Turtle + etiquetes : 91 %
  • ISOLDA 0.1 : 92 %

Gemma 4 31B · Municipis

  • JSON-LD : 75 %
  • Turtle + etiquetes : 79 %
  • ISOLDA 0.1 : 36 %

Qwen3.8 27B · DCAT

  • JSON-LD : 91 %
  • Turtle + etiquetes : 90 %
  • ISOLDA 0.1 : 100 %

Qwen3.8 27B · Municipis

  • JSON-LD : 72 %
  • Turtle + etiquetes : 77 %
  • ISOLDA 0.1 : 52 %

Gemma 4 E4B · DCAT

  • JSON-LD : 72 %
  • Turtle + etiquetes : 78 %
  • ISOLDA 0.1 : 94 %

Gemma 4 E4B · Municipis

  • JSON-LD : 37 %
  • Turtle + etiquetes : 65 %
  • ISOLDA 0.1 : 36 %

Qwen3 4B · DCAT

  • JSON-LD : 61 %
  • Turtle + etiquetes : 64 %
  • ISOLDA 0.1 : 63 %

Qwen3 4B · Municipis

  • JSON-LD : 26 %
  • Turtle + etiquetes : 27 %
  • ISOLDA 0.1 : 14 %
87 preguntes sobre el catàleg DCAT i 170 sobre el graf de municipis, generades automàticament a partir de l'estructura de cada graf i congelades abans de la prova. «Turtle + etiquetes» és Turtle amb el nom de cada entitat enllaçada afegit com a comentari, la referència més forta per a tots els models.

Amb el catàleg de dades, ISOLDA va igualar o superar la millor referència amb tots els models: fins a un 94 % davant d'un 78 % amb el Gemma petit. Amb els municipis es va enfonsar, sobretot en les preguntes de diversos salts (un 2 % davant d'un 98 % amb Gemma 4 31B).

Per què. Cada municipi de Wikidata té el nom en català, castellà i anglès. La versió 0.1 només feia servir el nom com a identificador quan n'hi havia exactament un, de manera que va recórrer a codis com manresa o bages, i els models van respondre amb el codi: just l'error que ISOLDA volia evitar. El graf de desenvolupament, amb un sol nom per entitat, no l'havia fet aflorar.

05 · Què ve ara

ISOLDA 0.2, i dades noves per provar-la

La versió 0.2 canvia quatre coses, cadascuna pensada per a un límit que van destapar les proves:

  1. Un idioma preferit per als noms. Si hi ha noms en diversos idiomes, en tria un (anglès, després sense etiqueta d'idioma, després la resta) com a identificador; els altres passen a ser columnes normals.
  2. Noms fila a fila. Un nom repetit ja no converteix tota una taula en codis; només aquella fila.
  3. Noms de propietats llegibles. Quan el graf sap què vol dir wdt:P1082, ISOLDA escriu population.
  4. Enllaços més curts. Els IRI de les entitats s'escriuen amb un prefix en lloc de sencers a cada fila.

Amb les dades que es van fer servir per dissenyar-la, la 0.2 ja redueix els contextos de KG-LLM-Bench de 8.076 a 5.925 tokens de mitjana. Això no és una validació, així que hi ha en marxa dos estudis preregistrats nous: un amb un graf d'escriptors en català de Wikidata i un amb el mateix KG-LLM-Bench, amb les seves tasques, prompts i puntuació. Un tercer estudi mirarà si els resultats es mantenen quan el model treballa del tot en català, una llengua no hegemònica.

Anirem actualitzant aquesta pàgina a mesura que arribin els resultats, surtin com surtin.