F-Logik F-Logik (Syntax) Kifer, Lausen, Wu, Journal of the ACM, 42:741–843, 1995. Dank an Jürgen Angele Steffen Staab ISWeb – Informationssysteme & Semantic Web F - Logik Steffen Staab ISWeb – Informationssysteme & Semantic Web Konzepte und SubkonzeptBeziehung Objekte werden durch eindeutige Ids identifiziert: Objektorientierte (Frame basierte) Logik Element::OBJECT. Wohl-definierte Semantik (wohl-fundierte Semantik) Molecule:: OBJECT. IonicMolecule::Molecule. Salt::IonicMolecule. Acid::IonicMolecule. Base::IonicMolecule. StrongAcid::Acid. WeakAcid::Acid. Effiziente Evaluationsstrategie Turing-vollständig 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 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 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 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 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 ]. 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 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 Listen [a, b, c, d, e] [Head | Tail] [a, b, c, d | Tail] 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 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 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 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 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 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]. 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 Steffen Staab ISWeb – Informationssysteme & Semantic Web Parametrisierte Module: Statische Verschachtelung Transitive { Parametrisierte Module Transitive { // Transitive Subklassenbeziehung FORALL X[subClassOf->>Z] <- X[subClassOf->>Y] and Y[subClassOf->>Z] // 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]. } Car { PassengerVehicle[rdfs:subClassOf ->> MotorVehicle]. Truck[subClassOf ->> MotorVehicle]. Van[rdfs:subClassOf ->> PassengerVehicle]. } } FORALL X,Y <- X[subClassOf->>Y]@Car. Steffen Staab ISWeb – Informationssysteme & Semantic Web 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 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,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 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 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 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 Unmittelbarer Folgeoperator 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 Y Steffen Staab ISWeb – Informationssysteme & Semantic Web Semantik eines F-Logik Programms (ohne Negation) Wenn ein n existiert, so dass: 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 p(a). p(b). q(a). Beispiel r(X) ← q(X). t(X) ← p(X) and r(X). Tn(F) = Tn+1(F) F = {p(a), p(b), q(a)} dann ist G = Tn(F) = Fp(F) die Menge der durch die Regeln (ohne Negation) gemeinten Fakten. 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 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. 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)} and Biσ ∈ F and Njσ ∉ F }, σ ist eine Variablensubstitution. 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 Steffen Staab ISWeb – Informationssysteme & Semantic Web Alternierender Fixpunkt: Beispiel Dynamisches Filtern (Kifer) person(sb). 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) woman(X) <- person(X) and not man(X). ← p(X, c) a ← p(X, c) man(X) <- person(X) and not woman(X). T(F={person{sb}}) = {woman(sb), man(sb), person(sb)} a, c X, c T(T(F)) = {person(sb)} p(X, Y) ← q(f(X), X) ∧ r(X, Y) T(T(T(F))) = {woman(sb), man(sb), person(sb)} f(a), a f(e), e T(T(T(T(F)))) = {person(sb)} Unbekannte Fakten = {woman(sb), man(sb)} Steffen Staab ISWeb – Informationssysteme & Semantic Web a f(c) f(c) ← q(X, c) ∧ not p(X, c) a, c f(c),c X, c a, c f(a), a f(a), a q(f(a), a) q(a,c) q(f(c),c) a, c X, c r(a, c) r(c,d) r(e,f) Steffen Staab ISWeb – Informationssysteme & Semantic Web r(a, c) r(c, d) r(e, c) a ← q(X, c) ∧ not p(X, c) Schicht 2 a, a a, c p(X, Y) ← q(f(X), X) ∧ r(X, Y) p(X, Y) ← q(f(X), X) ∧ r(X, Y) X, c a, c e, c Stratifizierung a f(c) a, a X, c Steffen Staab ISWeb – Informationssysteme & Semantic Web Problem Negation X, c a, c f(a), a q(f(a), a) q(a,c) q(f(c),c) Wahre Fakten = {person(sb)} a f(c) a, c e, c a, a 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