将semantic移到composer