Geen kant en klare oplossingen
Hoe definiëren we domeinpredicaten?
Constraints:
Type is 'schatting':
Person(Matthias).
Person(Jo).
¬Person(België).
Definitie:
{
KRR(Jo).
KRR(Matthias).
}
Eenduidig bepaald
(zonder structuren)
In IDP4.0: Expliciet generatoren aangeven.
(Binaire quantificatie)
! x : KRR(x) => HeeftDiploma(Master, x).
? x : KRR(x) & HeeftDiploma(PhD, x).
Via definitie:
Grounding is duidelijk: KRR is genererend.
Via constraint:
! x : Person(x) => leeftijd(x) > 18.
? x : Person(x) & leeftijd(x) > 26.
Grounding minder duidelijk?
Person slechts ondergrens van type
Ook grounding voor 'Tafel'?
=> lazy grounding + relevantie nodig
{
nat(zero).
nat(s(x)) <- nat(x).
}
Via definitie (2):
Quantificatie over x
Hier geen generator?
-> maar inductief proces, lijkt niet nodig
{
nat(zero).
nat(s(x)) <- nat(x).
}
Via definitie (2):
!x : nat(x) => x=zero | GroterDanNul(x).
!x : nat(x) & <(x,21) => Punt(x).
Willen we kunnen grounden
Hoe weten we dat de test monotoon is t.o.v. de inductie-orde?
{
nat(zero).
nat(s(x)) <- nat(x).
}
Via definitie (2):
!x : nat(x) & <(x,21) => Punt(x).
Hoe weten we dat de test monotoon is t.o.v. de inductie-orde?
Mogelijke oplossing?
{
nat(zero, G).
nat(s(x), G) <- nat(x) & G(x).
}
Soms blijven bepaalde types leeg
{
Weapon(x) <- false.
}
!x : ¬Weapon(x).
Niet heel natuurlijk?
Waarover quantificeert x? (Generator?)
Sets als expressies in de taal?
Weapon = {}.
Subtyping
CommDevice
Receiver
Transmitter
Transceiver
Subtyping
CommDevice
Receiver
Transmitter
Transceiver
{
CommDevice(x) <- Receiver(x) | Transmitter(x).
Transmitter(RadioMast).
Transmitter(x) <- Transceiver(x).
Receiver(Radio).
Receiver(x) <- Transceiver(x).
Transceiver(GSMMast).
Transceiver(GSM).
Transceiver(WalkieTalkie).
}
Subtyping
CommDevice
Receiver
Transmitter
Transceiver
{
CommDevice(x) <- Receiver(x) | Transmitter(x).
Transmitter(RadioMast).
Transmitter(x) <- Transceiver(x).
Transmitter(x) <- Transmitter_o(x).
Receiver(Radio).
Receiver(x) <- Transceiver(x).
Transceiver(GSMMast).
Transceiver(GSM).
Transceiver(WalkieTalkie).
Transceiver(x) <- Transceiver_o(x).
}
o
o
Vocabulary V {
type AttrSrc
type Stakeholder isa AttrSrc
type User isa Stakeholder
type Organization isa Stakeholder
}
Structure S : V {
AttrSrc = {
User;
Government; University; WS; PS;
BasicIDCard; PrivIDCard; StudentCard;
BasicPurchaseServ; PrivPurchaseServ;
BasicReductionPurchaseServ;
PrivReductionPurchaseServ; DeliveredServ;
DeliveryRequestServ; DeliveryServ;
}
Stakeholder = {
User;
Government; University; WS; PS;
}
User = {
User;
}
Organization = {
Government; University; WS; PS;
}
}
Vocabulary {
AttrSrc
User
Organization
Stakeholder
}
{
AttrSrc(User).
...
AttrSrc(DeliveryRequestServ).
AttrSrc(DeliveryServ).
User(User).
Organization(Government).
Organization(University).
Organization(WS).
Organization(PS).
Stakeholder(x) <- User(x).
Stakeholder(x) <- Organization(x).
}
!x : Stakeholder(x) => Location(x,Londen).
?x : Stakeholder(x) & Secure(x).
naam | tel. |
---|---|
Matthias | 031024390 |
Jo | 302492030 |
naam | tel. |
---|---|
Matthias | 031024390 |
Ingmar |
DB1
DB2
p1
p2
p3
p1_db1
p2_db1
p1_db2
p2_db2
constrDB1
constrDB2
DB1_t
Person
f
f'
{
New y : Person & f(x)=y <- DB1_t(x).
New y : Person & f'(x)=y <- DB2_t(x) & !z [DB1_t] : ~Canoniek(x,z).
f'(x)=y <- DB2_t(x) & (?z [DB1_t] : Canoniek(x,z) & f(z)=y).
}
DB2_t