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