Formato di interscambio di regole

Il Rule Interchange Format (RIF) è una raccomandazione del W3C. RIF fa parte della roadmap del web semantico , principalmente con SPARQL , RDF e OWL . Sebbene inizialmente inteso da molti come un "livello di regole logiche" per il web semantico, in realtà il design del RIF si basa sull'osservazione che ci sono molti "linguaggi delle regole" e che è necessario scambiare regole tra loro.

RIF include tre dialetti, un dialetto Core, un Basic Logic Dialect (BLD) e il Production Rule Dialect (PRD).

Storico

Il gruppo di lavoro RIF è stato avviato alla fine del 2005. Uno dei suoi obiettivi è attrarre promotori di regole sui mercati commerciali. Il gruppo di lavoro inizia con più di 50 membri, di cui 2 da parte dell'industria, Christian de Sainte-Marie da ILOG , e Chris Welty da IBM . La carta per lo sviluppo di un formato di scambio tra i sistemi di regole esistenti è influenzata da un seminario dell'estate 2005, per il quale era chiaro che una singola regola linguistica non avrebbe soddisfatto le esigenze delle parti interessate (il Dr. Welty descrive il risultato di questo seminario come un equilibrio di Nash ).

RIF è diventato una raccomandazione W3C su 22 giugno 2010.

Regole e sistemi di regole

Una regola è forse una delle nozioni più semplici in informatica: è un costrutto IF (IF) - THEN (THEN). Se determinate condizioni (nella parte IF) sono verificabili con determinati dati, viene elaborata la conclusione (la parte THEN). Derivati ​​dalla logica , i sistemi di regole utilizzano la nozione di predicati che consente l'inferenza o meno di dati o oggetti. Ad esempio, il fatto che due persone siano sposate, può essere rappresentato con predicati come MARRIED (LISA, JOHN) . MARIÉ è un predicato che offre un'inferenza tra LISA e JOHN . Aggiungendo la nozione di variabili, una regola potrebbe essere simile a:

SI ''MARIÉ(?x, ?y)'' ALORS ''AIME(?x, ?y)''

Quindi per ogni coppia di? X e? Y (ad esempio, LISA e JOHN ) in cui viene applicato il predicato MARRIED , un sistema informatico può dedurre con questa regola che il predicato AIME si applica alla coppia? X e? Y.

Le regole sono un modo semplice per sapere come rappresentare la conoscenza e sono una semplificazione radicale della logica del primo ordine per la quale è relativamente facile implementare motori di inferenza in grado di elaborare condizioni e trarre buone conclusioni. Un sistema di regole è un'implementazione particolare della sintassi e della semantica di una regola , che può estendersi dalla semplice nozione sopra descritta per includere:

I sistemi di regole sono stati applicati e studiati dalla metà degli anni '70 e sono stati ampiamente adottati negli anni '80 con l'emergere di sistemi esperti .

Dialetti standard RIF

I dialetti RIF standard sono Core, BLD e PRD. Questi dialetti dipendono da un ampio elenco di tipi di dati con funzioni incorporate e previste su quei tipi di dati.

Le relazioni tra i diversi dialetti RIF sono mostrate nel diagramma di Venn.

DTB

Nucleo

FLD

BLD

PRD

Esempio (Esempio 1.2 in)

Prefix(ex <http://example.com/2008/prd1#>) (* ex:rule_1 *) Forall ?customer ?purchasesYTD ( If And( ?customer#ex:Customer ?customer[ex:purchasesYTD->?purchasesYTD] External(pred:numeric-greater-than(?purchasesYTD 5000)) ) Then Do( Modify(?customer[ex:status->"Gold"]) ) )

Dialetti RIF non standard

CASPD

Esempio:

Document( Prefix(ex <http://example.com/concepts#>) Group ( Forall ?S ( ex:afraid(?S ex:Math) :- And ( ?S#ex:Student (Naf Neg ex:afraid(?S ex:Math)) ) ) Forall ?S ( Neg ex:afraid(?S ex:Math) :- And ( ?S#ex:Student ?S[ex:majors -> ex:Math] ) ) )

URD

Esempio:

Document( Import (<http://example.org/fuzzy/membershipfunction >) Group ( Forall ?x ?y( cheapFlight(?x ?y) :- affordableFlight(?x ?y) ) / 0.4 Forall ?x ?y(affordableFlight(?x ?y)) / left_shoulder0k4k1k3k(?y) ) )

SETA

Esempio

Document { Prefix(foaf http://xmlns.com/foaf/0.1/) Prefix(pub http://example.org/pub#) Prefix(silk http://TBD/silk#) Group { (* r1 *) Forall ?a1 ?a2 ?paper (?a1[foaf:knows->?a2]  :- ?paper # pub:Publication[pub:author->?a1, pub:author->?a2}]) (* r2 *) Forall ?a1 ?a2 (neg ?a1[foaf:knows->?a2]  :- ?a1[hasNeverMet->?a2]) silk:overrides(r2, r1) } }

Riferimenti

  1. Kifer, Michael (2008). " Rule Interchange Format: The Framework ". in: Web Reasoning and Rule Systems. Appunti delle lezioni in informatica
  2. http://www.w3.org/TR/2010/NOTE-rif-overview-20100622/
  3. https://www.w3.org/2005/rules/wiki/images/b/b0/W3C_RIF-CW-9-09.pdf
  4. http://www.w3.org/TR/2010/REC-rif-core-20100622/
  5. https://www.w3.org/TR/rif-ucr/#Structure_of_RIF
  6. Specifiche RIF-PRD

link esterno