F-Logik - userpages

Werbung
F-Logik
Dank an Jürgen Angele
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
F-Logik
(Syntax)
Kifer, Lausen, Wu, Journal of the ACM, 42:741–843, 1995.
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
F - Logik
ƒ Objektorientierte (Frame basierte) Logik
ƒ Wohl-definierte Semantik (wohl-fundierte Semantik)
ƒ Effiziente Evaluationsstrategie
ƒ Turing-vollständig
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Konzepte und SubkonzeptBeziehung
Objekte werden durch eindeutige Ids identifiziert:
Element::OBJECT.
Molecule:: OBJECT.
IonicMolecule::Molecule.
Salt::IonicMolecule.
Acid::IonicMolecule.
Base::IonicMolecule.
StrongAcid::Acid.
WeakAcid::Acid.
http://www.projecthalo.com/
-> downloads
-> Halo pilot downloads
-> Ontoprise Halo Improved download
(Format: EXE/78 MB)
Matter::OBJECT.
PureSubstance::Matter.
Mixture::Matter.
HomogeniousMixture::Mixture.
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Konzeptuelle Modellierung
Definiere Bereiche von Beziehungen:
Element[hasName=>>STRING;
hasSymbol=>STRING;
hasWeight=>NUMBER;
hasGroupName=>STRING;
......
elementNumber=>NUMBER;
electronegativity=>NUMBER].
Molecule[hasName=>>STRING;
hasFormula=>>STRING;
hasCharge=>NUMBER].
IonicMolecule[hasName=>>STRING;
hasAnion=>Anion;
hasCation=>Cation;
hasAnionCoefficient=>NUMBER;
hasCationCoefficient=>NUMBER;
hasFormula=>>STRING].
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Instanzen und Attribute
Zuordnung von Attributswerte :
Lactic:WeakAcid.
Lactic[hasFormula->>"HC3H5O3";
hasName->>"Lactic Acid";
hasKa1->1.4E-4].
Sodiumlactate:Salt.
Sodiumlactate[hasFormula->>"NaC3H5O3";
hasName->>"Sodium lactate";
isSaltOf->Lactic].
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Regeln
// Der pH-Wert hängt von der Konzentration des Hydronium
(H3O+) ab
Regel phvalue:
FORALL Ph,H,R phH(H,Ph)
<- power(10,R,H) and multiply(R,-1,Ph).
// Der pH-Wert hängt von der Konzentration des Hydronium ab
Regel phMixture:
FORALL H,Ph,M M[hasPh->Ph]
<- M:Mixture[hasH->H] and phH(H,Ph).
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Erstes Beispiel
/* Schema */
Mixture[
hasH =>NUMBER;
hasPh=>NUMBER].
/* Fakten */
m:Mixture[hasH -> 1.7 E-4].
/* Regeln */
FORALL Ph,H,R phH(H,Ph) <- power(10,R,H) and multiply(R,-1,Ph).
FORALL H,Ph,M m[hasPh->Ph] <- M:Mixture[hasH->H] and phH(H,Ph).
/* Query */
FORALL Ph <- m[hasPh->Ph].
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Quantifizierung
Quantifizierung kann sich auch über Konzepte
und Beziehungen erstrecken:
– FORALL X,Y <- X::Y.
– FORALL X,R <- X[hasName=>>R].
– FORALL A,R <- Element[A=>R].
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
F-Molekül
ƒ Ein F-Molekül:
Sodiumlactate:Salt[hasFormula->>"NaC3H5O3";
hasName->>{"Sodium lactate", "sodiumlactate"};
isSaltOf->Lactic].
ƒ Kann in mehrere F-Atome gesplittet werden:
Sodiumlactate:Salt.
Sodiumlactate[hasFormula->>"NaC3H5O3"].
Sodiumlactate[hasName->>"Sodium lactate"].
Sodiumlactate[hasName->>"sodiumlactate"].
Sodiumlactate[isSaltOf->Lactic].
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Parametrisierte Beziehungen
m:Mixture[
hasMole(Lactic)->0.1;
hasMole(Sodiumlactate)->0.12
].
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Prädikate
Anstelle von
m:Mixture[
hasMole(Lactic)->0.1;
hasMole(Sodiumlactate)->0.12
].
schreibe auch
hasMole(m,Lactic,0.1).
hasMole(m,Sodiumlactate,0.12).
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Builtins
isString(<arg>)
concat(<string 1 > , <string 2 > , <string 3 >)
cut(<string>,<n>,<variable>)
tokenize(<string>,<delimiters>,<variable>)
tokenizen(<string>,<n>,<delimiters>,<variable>)
tolower(<string>,<variable>)
toupper(<string>,<variable>)
regexp(<regular expression>,<string1>,<string2>)
constant2string(<function>,<string>)
string2number(<string>,<number>)
sin,cos,tan,asin,acos,ceil,floor,exp,
rint,sqrt,round,max,min,pow
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Builtin Beispiele
• tolower:
FORALL X <- tolower(“I Love Ontologies!”,X).
• is, equals:
FORALL B,C,A <- (B is A+1) AND (C is A+2) AND equals(A,1).
• dbaccessuser2, concat:
FORALL X, PROJECTID, PROJECTNAME
X:Project[name->> PROJECTNAME] <dbaccessuser2(“table_projects",
F(“projectID",PROJECTID, “project_name",PROJECTNAME),
"mssqlserver2000",“database_projects",
“computer_xyz:1433", "zope","zope")
AND concat(“project", PROJECTID,X).
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Listen
[a, b, c, d, e]
[Head | Tail]
[a, b, c, d | Tail]
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Verschachtelung und
Pfadausdrücke
Sodiumlactate[isSaltOf->
Lactic[hasFormula->>"HC3H5O3";
hasName->>"Lactic Acid";
hasKa1->>1.4E-4]].
FORALL X,Y
<- Sodiumlactate[isSaltOf->X[hasName->>Y].
FORALL Y
<- Sodiumlactate.isSaltOf[hasName->>Y].
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Negation
FORALL I,A,C
I[isSoluble->true] <I:IonicMolecule[hasAnion->A; hasCation->C] and
(equal(A,Chlorine) or equal(A,Bromine) or
equal(A,Iodine))
and not equal(C,Mercury)
and not equal(C,Lead)
and not equal(C,Silver).
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Komplexere Regeln
p(1).
p(2).
p(3).
FORALL X maximum(X)
<- p(X) AND FORALL Y (p(Y) -> lessorequal(Y,X)).
Beliebige first-order Formel
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Namensräume (Namespaces)
Um verschiedene Objekte in
verschiedenen Ontologien zu unterscheiden:
<ns
</ns>
ontons:cars="www.cars-r-us.tv"
ontons:finance="www.financeWorld.tv"
ontons="www.myDomain.tv/private">
cars#Car[cars#driver => cars#Person;
cars#passenger =>> cars#Person;
cars#seats => NUMBER].
cars#Person[cars#name => STRING].
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Modellierung mit
unbekannten Ressourcen
_1:BufferSolution[hasPart->>{_2,_3}] and
_2:WeakAcid and
_3:Salt[isSaltOf->_2].
Drückt aus, dass eine Pufferlösung aus zwei Substanzen s1
und s2 besteht; s1 ist eine schwache Säure (WeakAcid)
und s2 ein Salz (Salt) dieser schwachen Säure s1.
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Modellierung auf der
Metaebene
Substance ist ein Konzept.
Substance[numberOfKnownSubstances->10000].
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Module
Balance {
import Reaction.
Reaction[ private hasReactantsList;
private hasProductsList ].
FORALL P,L,R
bproducts1(R,L)
<- R:com.ontoprise.ontonova.ontology.Reaction[hasProducts->>P] and
list(R,P,L).
FORALL R,C,C1,M,Re,Pr,L,L1,L2,Z
R[coefficients->>C; hasReactantsList->>L1;hasProductsList->>L2]
<- breactants(R,Re) and breactants1(R,L1) and bproducts(R,Pr) and
bproducts1(R,L2) and concatlists(Re,Pr,L) and matrixbycols(L,M) and
lessolve(M,C1)
and length(L,Z) and length(C,Z) and wholenumbered(C1,C).
}
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Parametrisierte Module:
Statische Verschachtelung
Transitive {
// Transitive Subklassenbeziehung
FORALL X[subClassOf->>Z]
<- X[subClassOf->>Y] and Y[subClassOf->>Z]
Car {
public PassengerVehicle[subClassOf ->> MotorVehicle].
public Truck[subClassOf ->> MotorVehicle].
public Van[rdfs:subClassOf ->> PassengerVehicle].
}
}
FORALL X,Y <- X[subClassOf->>Y]@Car.
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Parametrisierte Module
Transitive {
// Transitive Subklassenbeziehung
FORALL X[subClassOf->>Z]
<- X[subClassOf->>Y] and Y[subClassOf->>Z]
}
Car {
PassengerVehicle[rdfs:subClassOf ->> MotorVehicle].
Truck[subClassOf ->> MotorVehicle].
Van[rdfs:subClassOf ->> PassengerVehicle].
}
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Parametrisierte Module
FORALL X,Y <- X[subClassOf->>Y]@Car.
X = PassengerVehicle, Y = MotorVehicle
X = Truck, Y = MotorVehicle
X = Van, Y = PassengerVehicle
FORALL X,Y <- X[subClassOf->>Y]@Transitive(Car).
X = PassengerVehicle, Y = MotorVehicle
X = Truck, Y = MotorVehicle
X = Van, Y = PassengerVehicle
X = Van, Y = MotorVehicle
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Lloyd-Topor Transformation
FORALL X maximum(X)
<- p(X) AND FORALL Y (p(Y) -> lessorequal(Y,X)).
FORALL X,Y maximum(X)
<- p(X) AND (NOT p(Y) OR lessorequal(Y,X)).
FORALL X maximum(X)
FORALL X,Y q(X)
<- p(X) AND NOT q(X).
<- p(Y) AND
NOT lessorequal(Y,X).
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Transformation von F-Logik
nach Horn-Logik
a:C
isa_(a,C)
A::B
sub_(A,B)
A[B=>C]
atttype_(A,B,C)
A[B=>>C]
setatttype_(A,B,C)
a[B->c]
att_(a,B,c)
a[B->>c]
setatt_(a,B,c)
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Transformation von F-Logik
nach Horn-Logik
FORALL X,Y,Z X[ancestor->>Y]
<- X[father->Z] AND Z[ancestor->>Y].
FORALL X,Y,Z setatt_(X,ancestor,Y)
<- setatt_(X,father,Z) AND setatt_(Z,ancestor,Y).
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Naive Evaluation
q(f(a), a), q(a,c), q(f(c),c), r(a, c), r(c, d), r(e,f)
p(X, Y) ← q(f(X), X) ∧ r(X, Y)
← p(X, c)
X
a
c
Y
f(X)
X
X
c
d
f(a)
f(c)
a
c
a
c
c
d
a
c
e
f
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Y
Unmittelbarer Folgeoperator
Gegeben ist eine Menge von Fakten F.
Der unmittelbare Folgeoperator T ist gegeben durch:
T (F) = {H σ | H <- B1 Λ.. Λ Bn. and Biσ ∈ F} ∪ F,
σ ist eine Variablensubstitution.
Ti(F) = T(T(T(….(F)….))) i-mal
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Semantik eines F-Logik
Programms (ohne Negation)
Wenn ein n existiert, so dass:
Tn(F) = Tn+1(F)
dann ist
G = Tn(F) = Fp(F)
die Menge der durch die Regeln (ohne Negation) gemeinten
Fakten.
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
p(a). p(b). q(a).
Beispiel
r(X) ← q(X).
t(X) ← p(X) and r(X).
F = {p(a), p(b), q(a)}
T(F) = {r(a)} ∪ {p(a), p(b), q(a)}
T(T(F)) = {r(a), t(b), p(a), p(b), q(a)}
= T(T(T(F))) = T(T(T(….(F)….)))
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Unmittelbarer Folgeoperator mit
Negation
Gegeben ist eine Menge von Fakten F.
Der unmittelbare Folgeoperator T ist gegeben durch:
T (F) = {H σ | H <- B1 Λ.. Λ Bn Λ ¬N1 Λ.. Λ ¬Nn.
and Biσ ∈ F and Njσ ∉ F },
σ ist eine Variablensubstitution.
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Stratifizierung: Beispiel
p(a). p(b). q(a).
r(X) ← q(X).
Schicht 1
t(X) ← p(X) and not r(X).
Schicht 2
F0 = {p(a), p(b), q(a)}
Fp(F0) = {r(a)} ∪ {p(a), p(b), q(a)} = F1
Fp(F1) = {t(b), r(a), p(a), p(b), q(a)} = F2
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Aber was ist damit?
person(somebody).
woman(X) <- person(X) and not man(X).
man(X) <- person(X) and not woman(X).
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Alternierender Fixpunkt
(Wohl-fundierte Semantik)
Van Gelder et al., JACM 1991, http://citeseer.nj.nec.com/gelder91wellfounded.html
Wenn ein n existiert wie:
Tn+1(F) = Tn-1(F) und
Tn+2(F) = Tn(F)
Dann sind die wahren Fakten gegeben durch die
kleinere Menge von Tn-1(F) und Tn(F)
Unbekannte Fakten sind durch die Mengendifferenz gegeben.
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Alternierender Fixpunkt:
Beispiel
person(sb).
woman(X) <- person(X) and not man(X).
man(X) <- person(X) and not woman(X).
T(F={person{sb}}) = {woman(sb), man(sb), person(sb)}
T(T(F)) = {person(sb)}
T(T(T(F))) = {woman(sb), man(sb), person(sb)}
T(T(T(T(F)))) = {person(sb)}
Wahre Fakten = {person(sb)}
Unbekannte Fakten = {woman(sb), man(sb)}
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Dynamisches Filtern (Kifer)
q(f(a), a), q(a,c), q(f(c),c), r(a, c), r(c, d), r(e,f)
p(X, Y) ← q(f(X), X) ∧ r(X, Y)
← p(X, c)
a
← p(X, c)
X, c
a, c
a, c
e, c
a, a
p(X, Y) ← q(f(X), X) ∧ r(X, Y)
f(a), a
f(e), e
f(a), a
q(f(a), a)
q(a,c)
q(f(c),c)
X, c
a, c
e, c
r(a, c)
r(c, d)
r(e, c)
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Problem Negation
a
f(c)
a
f(c)
← q(X, c) ∧ not p(X, c)
X, c a, c
a, a
a, c
p(X, Y) ← q(f(X), X) ∧ r(X, Y)
X, c
a, c
f(c),c
f(a), a
f(a), a
q(f(a), a)
q(a,c)
q(f(c),c)
X, c
r(a, c)
r(c,d)
r(e,f)
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Stratifizierung
a
f(c)
f(c)
a
← q(X, c) ∧ not p(X, c)
X, c a, c
Schicht 2
a, a
a, c
p(X, Y) ← q(f(X), X) ∧ r(X, Y)
X, c
a, c
f(c), c
f(a), a
f(a), a
q(f(a), a)
q(a,c)
q(f(c),c)
Schicht 1
X, c
r(a, c)
r(c,d)
r(e,f)
Steffen Staab
ISWeb – Informationssysteme & Semantic Web
Schicht 0
Herunterladen