Graph Quest Structure.
It seems rational to place all quest-related object into a bidirectional (probably weighted) world graph so
- easy non-linearness on all levels could be achieved (as long as multiple paths exist between starting and ending position[s] and a world graph has enough cycles);
- simplified generation and updating of complex and believable quests (e. g. someone can ask player to kill another NPC, but if that NPC is already dead (and quest-giver *knows that*), the quest won't be given), useful for long games involving much walking around gathering info and stuff;
- NPCs will have separate updatable graphs (could be fixed or dynamically generated in case of talking to a random passer-by or police officer or passenger in train).
- Things could easily be programmed to appear like they happen on their own and not always being triggered by player. Lots of non-linearness reside here!
Every fixed (generated at some point) NPC and quest location is node, and connections between them (probably acquaintances (so weights could depend not only on physical distance but also on relations between NPCs)) would be arcs. Locations won't give away any info though.