Ejemplo n.º 1
0
def make_negation_conflict():
    """ Creates two Nile intents that contradict each other due to negation """
    sentence_entities = {"id": "stn", "operations": []}
    hypothesis_entities = {"id": "hyp", "operations": []}
    sentence_entities, hypothesis_entities = sample_conflicting_endpoints(
        sentence_entities, hypothesis_entities)
    option = randint(0, 2)
    if option == 0:
        sentence_entities, hypothesis_entities = sample_conflicting_chaining(
            sentence_entities, hypothesis_entities)
    elif option == 1:
        sentence_entities, hypothesis_entities = sample_conflicting_rules(
            sentence_entities, hypothesis_entities)
    else:
        sentence_entities, hypothesis_entities = sample_conflicting_qos(
            sentence_entities,
            hypothesis_entities,
            stn_action='set',
            hyp_action='unset')

    conflict = {
        'type': 'negation',
        'sentence': builder.build(sentence_entities),
        'hypothesis': builder.build(hypothesis_entities),
        'conflict': 1
    }
    return conflict
Ejemplo n.º 2
0
def make_qos_conflict():
    """ Creates two Nile intents that contradict each other due to qos constraints """
    sentence_entities = {"id": "stn", "operations": []}
    hypothesis_entities = {"id": "hyp", "operations": []}

    if randint(0, 2) % 2 == 0:
        sentence_entities, hypothesis_entities = sample_conflicting_endpoints(
            sentence_entities, hypothesis_entities)
    else:
        sentence_entities, hypothesis_entities = sample_hierarchical_endpoints(
            sentence_entities, hypothesis_entities)

    if randint(0, 2) % 2 == 0:
        sentence_entities, hypothesis_entities = sample_conflicting_qos(
            sentence_entities, hypothesis_entities)
    else:
        sentence_entities, hypothesis_entities = sample_conflicting_qos(
            sentence_entities,
            hypothesis_entities,
            stn_action='set',
            hyp_action='unset')

    conflict = {
        'type': 'qos',
        'sentence': builder.build(sentence_entities),
        'hypothesis': builder.build(hypothesis_entities),
        'conflict': 1
    }
    return conflict
Ejemplo n.º 3
0
def make_time_conflict():
    """ Creates two Nile intents that contradict each other due to time constraints"""
    sentence_entities = {"id": "stn", "operations": []}
    hypothesis_entities = {"id": "hyp", "operations": []}
    sentence_entities, hypothesis_entities = sample_conflicting_endpoints(
        sentence_entities, hypothesis_entities)

    option = randint(0, 2)
    if option == 0:
        sentence_entities, hypothesis_entities = sample_conflicting_chaining(
            sentence_entities, hypothesis_entities)
    elif option == 1:
        sentence_entities, hypothesis_entities = sample_conflicting_rules(
            sentence_entities, hypothesis_entities)
    else:
        sentence_entities, hypothesis_entities = sample_conflicting_qos(
            sentence_entities, hypothesis_entities)

    # start/end
    sentence_entities, hypothesis_entities = sample_conflicting_timeranges(
        sentence_entities, hypothesis_entities)

    conflict = {
        'type': 'time',
        'sentence': builder.build(sentence_entities),
        'hypothesis': builder.build(hypothesis_entities),
        'conflict': 1
    }
    return conflict
Ejemplo n.º 4
0
def make_qos_entailment():
    """ Creates two Nile intents that entail each other with qos constraints """
    sentence_entities = {"id": "stn", "operations": []}
    hypothesis_entities = {"id": "hyp", "operations": []}

    sentence_entities, hypothesis_entities = sample_conflicting_endpoints(
        sentence_entities, hypothesis_entities)
    sentence_entities, hypothesis_entities = sample_entailing_qos(
        sentence_entities, hypothesis_entities)

    entailment = {
        'type': 'qos',
        'sentence': builder.build(sentence_entities),
        'hypothesis': builder.build(hypothesis_entities),
        'conflict': 0
    }
    return entailment
Ejemplo n.º 5
0
def make_time_entailment():
    """ Creates two Nile intents that entail each other with time constraints"""
    sentence_entities = {"id": "stn", "operations": []}
    hypothesis_entities = {"id": "hyp", "operations": []}
    sentence_entities, hypothesis_entities = sample_conflicting_endpoints(
        sentence_entities, hypothesis_entities)
    option = randint(0, 2)
    if option == 0:
        # middleboxes
        if randint(1, 10) % 2 == 0:
            sentence_entities, hypothesis_entities = sample_entailing_chaining(
                sentence_entities, hypothesis_entities)
        else:
            sentence_entities, hypothesis_entities = sample_conflicting_chaining(
                sentence_entities, hypothesis_entities)
    elif option == 1:
        # allow/block
        if randint(1, 10) % 2 == 0:
            sentence_entities, hypothesis_entities = sample_entailing_rules(
                sentence_entities, hypothesis_entities)
        else:
            sentence_entities, hypothesis_entities = sample_conflicting_rules(
                sentence_entities, hypothesis_entities)
    elif option == 2:
        # allow/block
        if randint(1, 10) % 2 == 0:
            sentence_entities, hypothesis_entities = sample_entailing_qos(
                sentence_entities, hypothesis_entities)
        else:
            sentence_entities, hypothesis_entities = sample_conflicting_qos(
                sentence_entities, hypothesis_entities)

    # start/end
    sentence_entities, hypothesis_entities = sample_entailing_timeranges(
        sentence_entities, hypothesis_entities)

    entailment = {
        'type': 'time',
        'sentence': builder.build(sentence_entities),
        'hypothesis': builder.build(hypothesis_entities),
        'conflict': 0
    }
    return entailment
Ejemplo n.º 6
0
def make_negation_entailment():
    """ Creates two Nile intents that entail each other with negation """

    sentence_entities = {"id": "stn", "operations": []}
    hypothesis_entities = {"id": "hyp", "operations": []}
    sentence_entities, hypothesis_entities = sample_conflicting_endpoints(
        sentence_entities, hypothesis_entities)

    option = randint(0, 2)
    if option == 0:
        # add/remove
        sentence_entities, hypothesis_entities = sample_entailing_chaining(
            sentence_entities, hypothesis_entities)
    elif option == 1:
        # allow/block
        sentence_entities, hypothesis_entities = sample_entailing_rules(
            sentence_entities, hypothesis_entities)
    elif option == 2:
        # set/unset
        sentence_entities, hypothesis_entities = sample_entailing_qos(
            sentence_entities,
            hypothesis_entities,
            stn_action='set',
            hyp_action='unset')

    if 'allow' in sentence_entities[
            'operations'] or 'block' in sentence_entities['operations']:
        if randint(0, 2) % 2 == 0:
            sentence_entities['operations'].append('add')
            sentence_entities['middleboxes'] = ['firewall']

        if randint(0, 2) % 2 == 0:
            hypothesis_entities['operations'].append('add')
            hypothesis_entities['middleboxes'] = ['firewall']

    entailment = {
        'type': 'negation',
        'sentence': builder.build(sentence_entities),
        'hypothesis': builder.build(hypothesis_entities),
        'conflict': 0
    }
    return entailment