Como fazer ?








Escrever termos,
Usar termos em frases,
Fazer afirmações usando os termos,
Montar classificações dos termos,
Criar regras de geração de novas afirmações,
provar a veracidade de novas afirmações,
Saber quem afirmou, classificou,fez regras e
provou
ter confiança nas afirmações.

Confiança
Provar
Regras
Classificações
Afirmações
Frases
Escrever
Termos
Quem

Escrever termos,
usar termos em frases,
Fazer afirmações usando os termos,
Montar classificações dos termos,
Criar regras de geração de novas
afirmações,
provar a veracidade de novas
afirmações,
Saber quem afirmou, classificou,fez
regras e provou
ter confiança nas afirmações



OWL baseado em Description Logic;
existem coisas que DL não pode
expresar
Exemplo: Regras de Horn:
(P1 ∧ P2 ∧ …) → C


Muitos sistemas baseados em regras
prescisam intercambiar regras
Existe portanto um novo tipo de dado
na web para ser trocado (regras)
Camada Lógica


Esta camada permite, através de regras
consultar paginas, fazer filtragem de
conteúdos, concluir sobre fatos.
Quais os professores que trabalham no
mesmo departamento do Prof. Gauthier?


Seria necessário acessar páginas de professores onde o
local de trabalho seja igual ao do prof. Gauthier.
Quais os colegas de turma de graduação do
reitor da ufsc?

Seria necessário criar regras que definam “colega de
turma” acessar uma ontologia sobre universidades,
localizar o significado de reitor, localizar a instÂncia.....
Algumas linguagens



RuleML
F-Logic
SWRL
RuleML
''The discount for a customer buying a
product is 5 percent
if
the customer is premium and the
product is regular.''
Implies
body
head
Atom
And
Atom
discount
Rel
customer
Var
product
Var
Atom
5.0
Ind
premium
Rel
customer
Var
regular
product
Rel
Var
<Implies>
<head>
<Atom>
<Rel>discount</Rel>
<Var>customer</Var>
<Var>product</Var>
<Ind>5.0</Ind>
</Atom>
</head>
<body>
<And>
<Atom>
<Rel>premium</Rel>
<Var>customer</Var>
</Atom>
<Atom>
<Rel>regular</Rel>
<Var>product</Var>
</Atom>
</And>
</body>
</Implies>
SWRL: A Semantic Web Rule
Language Combining OWL
and RuleML
http://www.w3.org/Submission/SWRL/
Regras

Uma regra contem:


Antecedente = corpo
Conseqüente = cabeça
Antecedente
Conseqüente
Exemplo de regra
Meteorologia prevê chuva;
o céu esta nublado;
Levo guarda-chuva e
uso galocha

tanto corpo como cabeça



conjunções positivas de átomos (?)
não aceita de negação ou disjunção
informalmente se todos os átomos
no corpo(antecedente) são
verdadeiros então todos os átomos
na cabeça (conseqüente) devem
ser verdadeiros
Regras SWRL são escritas
em termos de átomos





Átomos podem ser:
C(x), P(x,y), sameAs(x,y) ou
differentFrom(x,y), builtIn(r,x,...)
C -classe OWL,
P - propriedades OWL
x e y - instâncias OWL ou valores
de dados em OWL
builtIn(r,x,...)



r - relação entre os argumentos
built-in é uma relação (predicado) r que
toma vários argumentos (variáveis) e
tem o valor verdadeiro se os
argumentos satisfazem a relação r
swrlb:equal (x,y)
é verdadeiro se e somente se o primeiro
argumento e o segundo são os
mesmos.
Exemplo





Uma regra SWRL dizendo que uma
“pessoa” com um “gêmeo” do sexo
“masculino” tem um “irmão” requer
os conceitos em OWL de:
pessoa,
gêmeo
masculino,
irmão
Em OWL (intuitivamente)
Pessoa -> Classe
 Masculino -> subclasse Homem de Pessoa,
 Gêmeo -> propriedade tem_gêmeo de Pessoa
 Irmão -> propriedade tem_irmão Pessoa
Pessoa(?p) ^ tem_gêmeo(?p,?s) ^ Homem(?s) ->
tem_irmão (?p,?s)
 Executar a regra tem o efeito de colocar a
propriedade tem_irmão para todas as intancias
de pessoas OWL com um ou mais gêmeos
homens referindo-se a eles



Regra que diz que uma
Pessoa(classe) que tem seu
próprio carro (propriedade) deve
se classificada como
Motorista(classe)
Pessoa(?p) ^ tem_carro(?p, true)
-> Motorista (?p)

Todas as instâncias de Pessoa que
tenham carro serão classificadas
também como instancia de
Motorista



Instancias nomeadas em uma
ontologia podem também ser
referenciadas diretamente em
regras SWRL
Para uma instância de pessoa
chamada Carlos:
Pessoa(Carlos) ^
tem_carro(Carlos, true) ->
Motorista (Carlos)
Regras com vários átomos
conseqüentes

podem ser transformadas em múltiplas
regras cada uma com um único átomo
conseqüente



R1: Meteorologia prevê chuva e o
céu esta nublado -> Levo guardachuva e uso galocha
R1.1: Meteorologia prevê chuva e o
céu esta nublado -> Levo guardachuva
R1.2: Meteorologia prevê chuva e o
céu esta nublado -> uso galocha
Representação informal


As representações anteriores são
informais para permitir uma
representação que possa ser lida pelos
seres humanos
Existe uma sintaxe abstrata (abstract
syntax) especificada por meio de uma
versão de Extended BNF



rule ::= 'Implies(' [ URIreference ] {
annotation } antecedent consequent ')‘
antecedent ::= 'Antecedent(' { atom } ')‘
consequent ::= 'Consequent(' { atom } ')'


atom ::= description '(' i-object ')'
| dataRange '(' d-object ')'
| individualvaluedPropertyID '(' i-object iobject ')'
| datavaluedPropertyID '(' i-object dobject ')'
| sameAs '(' i-object i-object ')'
| differentFrom '(' i-object i-object ')'
| builtIn '(' builtinID { d-object } ')'
builtinID ::= URIreference

i-object ::= i-variable | individualID

d-object ::= d-variable | dataLiteral


i-variable ::= 'I-variable(' URIreference ')'
d-variable ::= 'D-variable(' URIreference ')'
Example 4.1-1 (w3c...)



A simple use of these rules would be to
assert that the combination of the
hasParent and hasBrother properties implies
the hasUncle property.
Informally, this rule could be written as:
hasParent(?x1,?x2) ∧ hasBrother(?x2,?x3)
⇒ hasUncle(?x1,?x3)
abstract syntax :

Implies(
Antecedent(
Consequent(
)
hasParent(I-variable(x1) I-variable(x2))
hasBrother(I-variable(x2) I-variable(x3))
)
hasUncle(I-variable(x1) I- variable(x3))
)
Sintaxe concreta em XML

Combinação de OWL Web Ontology
Language XML Presentation Syntax
[OWL XML] com RuleML XML syntax
[RuleML].
Exemplos




Iniciar projeto novo no Protégé
Selecionar Project->Configure->SWRL
Criar ontologia de Familia
Classes: Pessoa, Homem,Mulher, Pai,
Tio, Irmão, Irmã, Tia, Neto

Criar ObjectProperty de Pessoa:






tem_filhos,
tem_irmão,
tem_irmã,
tem_tio,
tem_tia
tem_Neto
Criar a seguinte Família

Instâncias de Mulher


Instâncias de Homem


Ana
Carlos, Pedro, João, João Raimundo
Colocar valores na propriedade
tem_filhos


Carlos - tem_filhos(Ana, Pedro, João)
João - tem_filhos(João Raimundo)
Especificar allDiferent

Em OWL instâncias com nomes (
propeiedade “name”) diferentes podem
representar o mesmo objeto



homem_14 (tem_nome Carlos)
homem_15 (tem_nome Carlos)
No Protégé: OWL->Edit owl:AllDiferent
Criar regras para Irmã



Pessoa(?x) ∧ tem_filhos(?x, ?y) ∧
tem_filhos(?x, ?z) ∧ Mulher(?z) ∧ →
tem_irma(?y, ?z) (ERRADA!!)
Na unificação variáveis diferentes (?y e
?z) podem pegar o mesmo objeto
tem_irma(?y, ?z) pode ser
tem_irma(Ana, Ana)
Regra Certa
Pessoa(?x) ∧ tem_filhos(?x, ?y) ∧
tem_filhos(?x, ?z) ∧ Mulher(?z) ∧
differentFrom(?y, ?z)
→ tem_irma(?y, ?z)
Usar as regras em SWRL



Baixar o Jess de:
http://herzberg.ca.sandia.gov/jess/
Descompactar e colocar o arquivo
jess.jar no diretorio do Protégé:

.....Protege_3.2.1\plugins\edu.stanford.smi
.protegex.owl
Usando o Reasoner
Reasoner Pellet





Reaoner em Java
Trabalha com OWL DL
Baseado no método do Tableaux
Ura principalmente as restrições
NÃO TRABALHA COM REGRAS
Instalação do Pellet

Fazer download de




http://pellet.owldl.com/
Descompactar
Rodar o pellet-dig junto com Protégé
No protégé OWL->Preferences alterar o
reasoner U|Rl para
http://localhost:8081
Download

Regras