Ejemplo n.º 1
0
def main(args=["E:\\workspace\\spf\\geoquery"]):
    resource_dir = os.path.join(args[0], "resources/")
    experiments_dir = os.path.join(args[0], "experiments/")
    data_dir = os.path.join(experiments_dir, "data")

    types_files = os.path.join(resource_dir, "geo.types")
    predicate_ontology = os.path.join(resource_dir, "geo.preds.ont")
    simple_ontology = os.path.join(resource_dir, "geo.consts.ont")

    LogicLanguageServices.set_instance(
        LogicLanguageServices.Builder(TypeRepository(types_files), FlexibleTypeComparator())
            .add_constants_to_ontology(simple_ontology)
            .add_constants_to_ontology(predicate_ontology)
            .set_numeral_type_name("i")
            .close_ontology(True)
            .build()
    )

    expr = LogicalExpressionBuilder.read("(size:<lo,i> (argmax:<<e,t>,<<e,i>,e>> (lambda $0:e (and:<t*,t> (city:<c,t> $0) (loc:<lo,<lo,t>> $0 alaska:s))) (lambda $1:e (size:<lo,i> $1))))")

    import sys
    sys.exit(0)

    category_services = LogicalExpressionCategoryServices(True, True)
    unfactored_constants = {LogicalConstant.read("the:<<e,t>,e>"), LogicalConstant.read("exists:<<e,t>,t>")}

    FactoredLexiconServices.set(unfactored_constants)

    read_lexicon = Lexicon()

    def text_filter(x):
        return x

    read_lexicon.add_entries_from_file(os.path.join(resource_dir, "seed.lex"), text_filter, category_services,
                                       LexicalEntry.Origin.FIXED_DOMAIN)
 def parse_semantics(cls, string, check_type=True):
     expr = LogicalExpressionBuilder.read(string)
     if check_type and not IsTypeConsistent.of(expr):
         raise RuntimeError("Semantic not well typed: %s" % string)
     #return Simplify.of(expr)
     return expr