Com a descrição da estrutura dos dados em XML, a representação da semântica simples desses dados em RDF(S) e a representação formal comummente aceite sobre o que significam esses dados em ontologias mais expressivas como OWL estão criadas as condições para que os agentes possam raciocinar sobre dados com significado bem definido. Não obstante, para que os agentes de software possam raciocinar sobre as estruturas de dados, tirando partido das relações entre os objectos dessas estruturas esclarecidas através de ontologias, pode ser necessário definir previamente regras para os mecanismos de inferência.
Embora as ontologias OWL forneçam construtores suficientes para exprimir a semântica necessária para a realização de inferências, apresentam algumas limitações, nomeadamente ao nível dos construtores de composição de propriedades. Tal como se pode constatar nos exemplos ilustrados na Figura 60, a linguagem OWL não permite expressar relações entre propriedades de ramos diferentes da hierarquia. Ou seja, não existe forma de declarar os relacionamentos entre duas relações compostas (por exemplo, através da indicação de que o tio é a composição do irmão e do pai).
c d b a e c d b a e
temPai(c,b) Λ temPai(b,a) temAvo(c,a) temPai(c,b) Λ temIrmao(b,e) temTio(c,e)
Inferência possível em OWL DL Inferência impossível em OWL DL
Mas, possível adicionando camada de regras
temPai temPai temPai temPai temPai temPai temPai temAvo temIrmão
Figura 60 – Uma limitação da OWL
Por conseguinte, em algumas situações haverá necessidade de recorrer a linguagens de regras para amplificar os axiomas OWL embutidos na ontologia, aumentando a capacidade de inferência e permitindo inferir informações implícitas.
Tipicamente, em cada sistema de representação do conhecimento existe uma distinção clara entre os dados e as regras de inferência. As regras controlam as etapas de inferência que o mecanismo de inferência realiza sobre os dados (Berners-Lee, 2000).
As regras de inferência são também um elemento chave para a visão da WS, uma vez que permitem que os dados provenientes de diversas fontes sejam integrados, derivados e transformados de uma forma distribuída, transparente e escalável.
A iniciativa RuleML (Rule Markup Initiative) tem colaborado com o W3C na normalização de regras para a Web, nomeadamente no âmbito dos Sistemas Distribuídos, Web Semântica, Computação Autónoma e Arquitecturas Orientadas a Serviços (Service
Oriented Architecture) activados semanticamente (RuleML, 2006).
O objectivo desta iniciativa é desenvolver a RuleML (Rule Markup Language) como uma linguagem canónica para regras baseada na XML, na semântica formal e em implementações eficientes. A RuleML cobre todo o espectro das regras: regras derivadas, regras transformadas e regras reactivas. Com esta linguagem é possível realizar consultas e inferências em ontologias Web, alinhamentos de ontologias, etc (Boley et al., 2005a).
Recentemente, têm vindo a ser desenvolvidas linguagens baseadas em RuleML. As linguagens de regras para a Web propostas para normalização que mais se destacam actualmente são: SWRL - Semantic Web Rule Language (Horrocks et al., 2004), WRL - Web
Rule Language (Angele et al., 2005) e FOL RuleML - First-Order Logic RuleML (Boley et al.,
2005b) enquadrada na proposta SWRL FOL (Semantic Web Rule Language First-Order Logic). No âmbito de outros projectos surgiram também linguagens para regras de inferência, tais como: DAML-L (DAML-Logic); N3 (Notation 3); XRML (eXtensible Rule Markup Language); RFML (Relational-Functional Markup Language); URML (Universal Rule Markup Language); AORML (Agent-Object-Relationship Markup Language); CBML (Case Based Markup
Language); Metalog, KIF; ISO Common Logic; ISO Prolog; entre outras. Existem também
algumas linguagens que têm aplicações específicas em dados domínios tais como: políticas de
Web Services (WS-Policy, WSPL, Policy RuleML, SWSL, WSML), autorização e controle de
acesso (XACML, EPAL, P3P/APPEL), regras para o comércio ou negócio (BRML - Business
Rules Markup Language, SRML - Simple Rule Markup Language), entre outras áreas. Os
esforços de normalização têm vindo também a incidir sobre a modelação de regras (OMG's
Business Semantics for Business Rules RFP e Production Rules Representation RFP) e motores
As linguagens de regras para a Web que mais se têm destacado nestes últimos dois anos foram: SWRL e WRL. SWRL é uma linguagem baseada nas cláusulas de Horn e na combinação das sub-linguagens OWL DL e OWL Lite com as sub-linguagens Datalog unárias/binárias da linguagem RuleML. Enquanto que WRL é uma linguagem baseada na programação lógica e com um nível de expressividade muito próximo da Description Logic. Uma comparação sucinta entre estas duas linguagens pode ser visualizada na Tabela 4 (Moura, 2006).
Parâmetros SWRL WRL
Baseada em Cláusulas de Horn Programação Lógica
Relação com OWL Extensão da OWL DL Possui um subconjunto em comum com a OWL DL
Origem OWL DL e RuleML WSML
Negação por falha Sim, inclusive no cabeçalho da regra Apenas na WRL-Flight e WRL- Full (excepto no cabeçalho da regra) Quantificadores Sim, inclusive no cabeçalho da regra Apenas na WRL-Full
(excepto no cabeçalho da regra) Semântica Ambiente aberto Ambiente fechado
Tabela 4 – Comparação entre SWRL e WRL
No âmbito desta dissertação destacamos a linguagem SWRL, uma vez que pode ser vista como uma extensão da linguagem OWL recomendada pelo W3C, assumindo a semântica segundo uma visão mais coerente com o ambiente da Web Semântica.
Tal como vimos anteriormente, a sintaxe abstracta de uma ontologia OWL contém uma sequência de axiomas e de factos. A SWRL complementa estes axiomas com regras. Recordando a regra temTio da Figura 60, a sintaxe abstracta da SWRL trata as regras como axiomas e apresenta-as num formato legível para as pessoas (ver Figura 61).
axiom ::= rule
antecedente ⇒ consequente
rule ::= 'Implies(' [ URIreference ] { annotation } antecedent consequent ')' antecedent ::= 'Antecedent(' { atom } ')'
consequent ::= 'Consequent(' { atom } ')'
Para expressar estas regras abstractas num formato legível para os agentes de software usamos SWRL/XML. Assim, no caso do exemplo da Figura 60 a regra temTio poderia ser declarada tal como se pode observar na Figura 62.
Independentemente da linguagem usada, a definição de regras de inferência deve ter em atenção os requisitos dos utilizadores e as necessidades dos fornecedores da tecnologia de regras de inferência.
Figura 62 – Um exemplo com regras em SWRL