Ontology

DataBase.py - defines the data base interface

Copyright CUED Dialogue Systems Group 2015 - 2017

Note

Called by utils.Settings to load database into global variable db

See also

CUED Imports/Dependencies:

import utils.ContextLogger


class ontology.DataBase.DataBaseINTERFACE

DATA BASE HOLDERS must implement these methods

entity_by_features(constraints)

Retrieves from database all entities matching the given constraints.

Parameters:constraints – features. Dict {slot:value, …} or List [(slot, op, value), …] (NB. the tuples in the list are actually a dact instances)
Returns:(list) all entities (each a dict) matching the given features.
query_entity_property(entity, slot, value)

This method is needed just because we only pass entity name around at present – would be better to pass entity id around and retireive name when needed - as could wuickly access properties rather than searching … TODO

ontology.DataBase.get_dist(c1, c2)

Utility function for calculating the distance between 2 points on Earth.

Parameters:
  • c1 (2-tuple floats) – latitude,longitude
  • c2 (2-tuple floats) – latitude,longitude
Returns:

(float) distance

FlatOntologyManager.py - Domain class and Multidomain API

Copyright CUED Dialogue Systems Group 2015 - 2017

Controls Access to the ontology files.

See also

CUED Imports/Dependencies:

import utils.Settings
import utils.ContextLogger
import ontology.OntologyUtils


class ontology.FlatOntologyManager.FlatDomainOntology(domainString, rootIn=None)

Utilities for ontology queries

constraintsCanBeDiscriminated(constraints)

Checks if the given constraints list returns a list of values which can be discriminated between - i.e. there is a question which we could ask which would give differences between the values.

getRandomValueForSlot(slot, nodontcare=False, notthese=[], conditional_values=[])
Parameters:
  • slot (str) – None
  • nodontcare (bool) – None
  • notthese (list) – None
getSlotsToExpress(slot, value)
Parameters:
  • slot
  • value
Returns:

List of slot names that should be conveyed for the given abstract slot-value pair.

getValidRequestSlotsForTask()
Parameters:None
Returns:(list) with user requestable goal slot strings

Todo

should be extended to cover arbitrary domains and ontologies

getValidSlotsForTask()
Parameters:None
Returns:(list) with goal slot strings
get_sample_prob(candidate, conditional_values)

Sets a prob distribution over the values in candidate (which could be slots, or values with a slot) - assigns larger probabilities to things within the conditional_values list

Parameters:
  • candidate (list) – of strings
  • conditional_values (list) – of strings
Returns:

numpy vector with prob distribution

class ontology.FlatOntologyManager.FlatOntologyManager

A singleton class that is used system wide (single instance created in Ontology.py–>globalOntology) Provides access to all available domains ontologies and databases.

constraintsCanBeDiscriminated(domainString, constraints)

Checks if the given constraints list returns a list of values which can be discriminated between - i.e. there is a question which we could ask which would give differences between the values.

ensure_domain_ontology_loaded(domainString)
getRandomValueForSlot(dstring, slot, nodontcare=False, notthese=[], conditional_values=[])

Randomly select a slot value for the given slot slot.

get_discourseAct(dstring)

NB no copy

get_informable_slots(dstring)

NB no copy

get_informable_slots_and_values(dstring)

NOTE: not using copy.copy() since when used, it is only looped over, not modified

get_method(dstring)

NB no copy

get_ontology(dstring)

Note: not using copy.copy() – object assumed not to change

get_sorted_system_requestable_slots(dstring, mode='entity')

NB no copy

is_value_in_slot(dstring, value, slot)

Ontology.py - Provides system wide access to ontology

Copyright CUED Dialogue Systems Group 2015 - 2017

See also

CUED Imports/Dependencies:

import ontology.FlatOntologyManager
import ontology.OntologyUtils


ontology.Ontology.init_global_ontology()

Should be called ONCE by hubs [texthub, simulate, dialogueserver] (and Tasks when creating) – Then holds the ontology that is used and accessible system wide. Note that the class FlatOntologyManager(object) is a singleton.

ontology.Ontology.init_global_ontology_cer()

Should be called ONCE by hubs [texthub, simulate, dialogueserver] (and Tasks when creating) – Then holds the ontology that is used and accessible system wide. Note that the class FlatOntologyManager(object) is a singleton.

OntologyUtils.py - paths and rules for ontology

Copyright CUED Dialogue Systems Group 2015 - 2017

Warning

content partly hard-coded (paths, dicts, etc.)

See also

CUED Imports/Dependencies:

import utils.Settings
import utils.ContextLogger


ontology.OntologyUtils.get_database_path(domainString)

Required function just to handle repository root location varying if running on grid machines etc

ontology.OntologyUtils.get_domains_group(domains)

domains has (needs to have) been checked to be in [‘camtourist’,’sftourist’,’electronics’,’all’]:

ontology.OntologyUtils.get_ontology_path(domainString)

Required function just to handle repository root location varying if running on grid machines etc :rtype: object