130 likes | 193 Views
KM2SILK translator – Level 0 Design. Peter Clark Boeing Research and Technology April 2010. What needs to be translated?. (a) KM Prototypes Core prototype structure (nodes + arcs) Knowledge of coreference between prototypes Additional prototype structure
E N D
KM2SILK translator – Level 0 Design Peter Clark Boeing Research and Technology April 2010
What needs to be translated? (a) KM Prototypes • Core prototype structure (nodes + arcs) • Knowledge of coreference between prototypes • Additional prototype structure • constraints, if-then rules, equations (b) Component Library • Ontology (taxonomy, domain/range) • “Transitivity” (“grain size”) rules • Axioms • normal FOL axioms • eg., agent=object for Locomotion events • situation calculus event axioms? • (not used in AURA) Level 0 design Later work Fairly straight-foward Hand-translate? Need?
Part 1: KM Prototypes has-part Nucleus01 Eukaryotic-cell01 is-inside has-part DNA01 i.e.: x isa(x,EukCell) → y,z isa(y,Nuc), isa(z,DNA), has-part(x,y), has-part(x,z), is-inside(z,y). Basic idea: represent the graph as a similar data structure in SILK: ?x#eukaryotic-cell -> ?x[has-part->{ _nucleus1(?x)#nucleus, _dna1(?x)#dna[ is-inside->{_nucleus1(?x)}]}] // If ?x is a EukCell… // then it has-part a nucleus… // and a DNA… // that is inside that nucleus Could (?) compile that down to separate axioms (?), one per arc: ?x#eukaryotic-cell -> ?x[has-part->{ _nucleus1(?x)#nucleus}]. ?x#eukaryotic-cell -> ?x[has-part->{_dna1(?x)#dna}]. ?x#eukaryotic-cell -> ?x[has-part->{_dna1(?x)[is-inside->{_nucleus1(?x)}]}]
Part 1: KM Prototypes - “Coreference” has-part Nucleus01 what these coreferences Eukaryotic-cell01 is-inside has-part DNA01 shape has-part Nucleus02 *oval Plant-cell02 is-inside has-part DNA02 KM finds this using unification Chloroplast02 ?x#eukaryotic-cell -> ?x[has-part->{ _nucleus1(?x)#nucleus, _dna1(?x)#dna[ is-inside->{_nucleus1(?x)}]}] SILK can do this via shared Skolem function names ?x#plant-cell -> ?x[has-part->{ _nucleus1(?x)#nucleus[shape->oval], _dna1(?x)#dna[ is-inside->{_nucleus1(?x)}], _chloroplast1(?x)#chloroplast}].
Part 1: KM Prototypes - “Coreference” has-part Nucleus01 what these coreferences Eukaryotic-cell01 is-inside has-part DNA01 KM keeps track of these dependencies (if user did a copy+extend) → basis for generating shared Skolem names in SILK. shape has-part Nucleus02 *oval Plant-cell02 is-inside has-part DNA02 KM finds this using unification Chloroplast02 ?x#eukaryotic-cell -> ?x[has-part->{ _nucleus1(?x)#nucleus, _dna1(?x)#dna[ is-inside->{_nucleus1(?x)}]}] SILK can do this via shared Skolem function names ?x#plant-cell -> ?x[has-part->{ _nucleus1(?x)#nucleus[shape->oval], _dna1(?x)#dna[ is-inside->{_nucleus1(?x)}], _chloroplast1(?x)#chloroplast}].
Part 1: Coreference and question-answering • Shared Skolem function names • help (solve?) coreference issues within the KB • but not with question answering Given: has-part Nucleus01 Eukaryotic-cell01 is-inside has-part DNA01 ?x#eukaryotic-cell -> ?x[has-part->{ _nucleus1(?x)#nucleus, _dna1(?x)#dna[ is-inside->{_nucleus1(?x)}]}] // If ?x is a EukCell… // then it has-part a nucleus… // and a DNA… // that is inside that nucleus Ask: // “What is the DNA of a eukaryotic cell inside?” euk-cell02#eukaryotic-cell. | ?- euk-cell02[has-part->{_dna??(euk-cell02)[is-inside->?y]} How do we know which DNA are we asking about?
Part 1: KM Prototypes - A bit more complexity… • A Skolem might have more than one source… has-part Nucleus03 Nucleus01 Eukaryotic-cell01 is-inside is-inside has-part DNA03 DNA01 has-part Nucleus02 cloned-from: Nucleus01, Nucleus03 Plant-cell02 is-inside DNA02 • How do we name the Skolem functions now? _nucleus01(?plant-cell) ? _nucleus03(?plant-cell) ?
Part 1: KM Prototypes - Multiple clones… has-part Homologous-chromosome01 DNA01 has-part donor Homologous-chromosome02 DNA02 Crossing-Over01 donor has-part Homologous-chromosome03 DNA03 Um…something like this (?): ?x#hc -> ?x[has-part->{_dna1(?x)}]. // every hc has-part dna ?x#crossing-over -> // every crossing over has 2 hc donors ?x[donor->{ _hc1(?x)#hc[has-part->{_dna1(_hc1(?x))}], _hc2(?x)#hc[has-part->{_dna1(_hc2(?x))}]}]. Nested Skolem fns ok? (“the dna of the first homologous chromosome of ?x”)
Part 1: KM Prototypes – Coref within a graph cloned from DNA01 has-part object Chromatid-segment02 DNA03 Crossing-Over01 cloned from DNA01 has-part donor DNA02 Homologous-chromosome02 ?x#crossing-over -> ?x[donor->{ _hc1(?x)#hc[has-part->{_dna1(_hc1(?x))}]}, object->{ _cs1(?x)#cs[has-part->{_dna1(_cs1(?x))}]} ]. object Chromatid-segment02 has-part Crossing-Over01 DNA02 donor Homologous-chromosome02 How do we express this unification? ? _dna1(_cs1(?x)) = _dna1(_hc1(?x))
Part II: Component Library • Ontology (taxonomy, domain/range) • “Transitivity” (“grain size”) rules • 515 grain size rules + 35 transitivity rules • IF X toward Y AND Y is-near Z THEN X toward Z • IF X content Y AND Y has-region Z THEN X content Z • etc. • stored in a regularized database format → easy to translate! • translated to KM in Dec 2009 • could translate to SILK easily too
Part II: Some of the “Grain Size” Rules… IF X toward Y AND Y is-near Z THEN X toward Z IF X played-by Y AND Y is-part-of Z THEN X played-by Z IF X played-by Y AND Y is-region-of Z THEN X played-by Z IF X in-event Y AND Y subevent-of Z THEN X in-event Z IF X content Y AND Y has-part Z THEN X content Z IF X content Y AND Y has-region Z THEN X content Z IF X content Y AND Y material Z THEN X content Z IF X content Y AND Y encloses Z THEN X content Z IF X is-region-of Y AND Y is-part-of Z THEN X is-region-of Z IF X location-of Y AND Y has-region Z THEN X location-of Z IF X instrument Y AND Y element-of Z THEN X instrument Z IF X location-of Y AND Y material Z THEN X location-of Z IF X material-of Y AND Y is-part-of Z THEN X material-of Z IF X possesses Y AND Y has-part Z THEN X possesses Z IF X possesses Y AND Y has-region Z THEN X possesses Z IF X possesses Y AND Y material Z THEN X possesses Z IF X abuts Y AND Y location Z THEN X abuts Z (~40 use 1 relation, ~500 use 2 relations, 1* uses 3 relations) * IF W end-time X AND X before Y and Y start-time-of Z THEN W before Z
Part II: Component Library • Ontology (taxonomy, domain/range) • “Transitivity” (“grain size”) rules • 515 grain size rules + 35 transitivity rules • IF X toward Y AND Y is-near Z THEN X toward Z • IF X content Y AND Y has-region Z THEN X content Z • etc. • stored in a regularized database format → easy to translate! • translated to KM in Dec 2009 • could translate to SILK easily too • Axioms • normal FOL axioms • eg., agent=object for Locomotion events • situation calculus event axioms? • (not used in AURA)
Summary (a) KM Prototypes • Core prototype structure (nodes + arcs) • Knowledge of coreference between prototypes • Additional prototype structure • constraints, if-then rules, equations (b) Component Library • Ontology (taxonomy, domain/range) • “Transitivity” (“grain size”) rules • Axioms • normal FOL axioms • eg., agent=object for Locomotion events • situation calculus event axioms? • (not used in AURA) Some details still to work out Later work Fairly straight-foward Hand-translate? Need?