130 likes | 138 Views
This text discusses the need for translation of KM prototypes and component libraries, including core prototypes structure and constraints, as well as ontology and rules. It also explains how SILK can be used to represent the data 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?