Formato de troca de regra

O Rule Interchange Format (RIF) é uma recomendação do W3C. RIF faz parte do roteiro da web semântica , principalmente com SPARQL , RDF e OWL . Embora inicialmente pretendido por muitos como uma "camada de regras lógicas" para a web semântica, na realidade o design do RIF é baseado na observação de que existem muitas "linguagens de regras" e que há uma necessidade de trocar regras entre elas.

O RIF consiste em três dialetos, um dialeto central, um dialeto lógico básico (BLD) e o dialeto de regra de produção (PRD).

Histórico

O grupo de trabalho RIF foi lançado no final de 2005. Um de seus objetivos é atrair promotores de regras para os mercados comerciais. O grupo de trabalho começa com mais de 50 membros, incluindo 2 da indústria, Christian de Sainte-Marie do ILOG e Chris Welty da IBM . A carta para o desenvolvimento de um formato de intercâmbio entre os sistemas de regras existentes é influenciada por um seminário do verão de 2005, para o qual ficou claro que uma regra de idioma único não atenderia às necessidades das partes interessadas (o Dr. Welty descreve o resultado deste seminário como sendo um Equilíbrio de Nash ).

RIF tornou-se uma recomendação W3C em 22 de junho de 2010.

Regras e sistemas de regras

Uma regra é talvez uma das noções mais simples em ciência da computação: é uma construção SE (SE) - ENTÃO (ENTÃO). Se certas condições (na parte IF) são verificáveis ​​com certos dados, então a conclusão (a parte THEN) é processada. Derivados da lógica , os sistemas de regras utilizam a noção de predicados que permite a inferência ou não de dados ou objetos. Por exemplo, o fato de duas pessoas serem casadas, pode ser representado com predicados como CASADO (LISA, JOHN) . MARIÉ é um predicado que oferece uma inferência entre LISA e JOHN . Ao adicionar a noção de variáveis, uma regra pode ser semelhante a:

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

Portanto, para cada par de? X e? Y (por exemplo, LISA e JOHN ) onde o predicado MARRIED é aplicado, um sistema de computador pode deduzir com esta regra que o predicado AIME se aplica ao par? X e? Y.

As regras são uma maneira simples de saber como representar o conhecimento e são uma simplificação radical da lógica de primeira ordem para a qual é relativamente fácil implementar mecanismos de inferência que podem processar condições e tirar boas conclusões. Um sistema de regras é uma implementação particular de uma sintaxe e semântica de regra , que pode se estender a partir da noção simples descrita acima para incluir:

Os sistemas de regras têm sido aplicados e estudados desde meados da década de 1970 e foram amplamente adotados na década de 1980 com o surgimento dos sistemas especialistas .

Dialetos padrão RIF

Os dialetos RIF padrão são Core, BLD e PRD. Esses dialetos dependem de uma extensa lista de tipos de dados com funções internas e pretendidas nesses tipos de dados.

As relações entre os diferentes dialetos RIF são mostradas no diagrama de Venn.

DTB

Testemunho

FLD

BLD

PRD

Exemplo (Exemplo 1.2 em)

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"]) ) )

Dialetos RIF não padrão

CASPD

Exemplo:

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

Exemplo:

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) ) )

SEDA

Exemplo

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) } }

Referências

  1. Kifer, Michael (2008). " Formato de troca de regras: a estrutura ". em: Web Reasoning and Rule Systems. Notas de aula em ciência da computação
  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. Especificação RIF-PRD

links externos