Introduction
How do you talk to NPCs? Can you talk to NPCs?
I really hope you can. It doesn't have to be complicated. As long as you can ask "What's up?", and get an answer actually coming from the NPC, I'm fine with it. This post will tell about my proposal. It operates on the ideas I have about how the NPCs think about information. It also is kinda like speaking the NPC's "native tongue".
Knowledge and basics
Knowledge, in my proposal, is handled using Set theory, and all communication and knowledge is saved in "Set Y includes X" -format. This should tie in well with the tag system. Added to this knowledge, there should be a measure of trust to the fact, and how long it was since the fact was saved (if applicable; you don't really need to know when you saw a planet being in the position it is).
Communication is done using nodal messages, describing "Set Y includes X"-relationships. They can also be queries, requests for information. NPC-NPC communication is done in exactly the same way as Player-NPC communication, NPCs understand what you're saying, and can react intelligently.
Interface and functionality
To send such message, you choose an NPC to send it to, by hailing a ship to open comms channel or choosing a one from your contacts list. Using communication systems and information lag are applicable. You will be brought to an interface similar to a smartphone's text-messaging interface, where you can easily see your dialoque history. There is an empty message shell there, ready to be filled. The shell has two "empty" nodes, the subject (the set) and the object (the member). They're able to be filled with proper nouns (a certain system or person) or more general sets and tags. The general tags are taken from a dictionary node, where you can search them by name.
When the node is found, it can be dragged to one of the empty nodes. If the node has possible parameters, new empty nodes will pop up from the origin node. I'm imagining for it to be very pretty. If you want to set the parameters, you put them in. Some parameters are required, and some are optional.
There are four nodes in the dictionary not able to be put in the empty nodes: Yes, No, Ask and Inversion. Yes and No are messages. Choosing it overdrives the entire other message with either positive or negative answer sentence*. Ask and Inversion are nodes able to be put in the message, but don't map to any empty nodes. Inversion changes the message from "Set X includes Y" to "Set X doesn't include Y". Ask makes the message a request for truth value of the message: "Does set X include Y?".
Another important node is the "What" -node which is used to ask anything other than truth values. Putting a "What" -node on an empty node means asking the receiver to fill it in. They have a bunch of parameters to filter the list.
You can put multiple objects and subjects in the same message, which combines them by "and" i.e. "Sets X and Z both include Y and W."
The messages should be able to be glanced over and get a general idea of the message easily.
*Positive answer sentence for "Does set X include Y?" is "Set X includes Y", negative would be "Set X doesn't include Y".
Examples
This section has example sentences and conversations to provide an idea about how to use the system.
"There is Viritium in Hodet asteroid field."
Subject (shortened to S from now on): Hodet asteroid field, Object (shortened to O from now on): Viritium
"What minerals are there in Hodet asteroid field?"
S: Hodet asteroid field, O: What (parameter: Mineral)
"Where (near me) can I find Viritium?"
S: What (parameters: max 4 jumps, zone(note: to prevent including stations and people)), O: Viritium
"Does Jack know there's Viritium in Hodet asteroid field?"
S: Jack, O: Knowledge (parameters: S: Hodet asteroid field, O: Viritium)
(Note: by using this, you could ask "Does A know that B knows that C knows... ?")
"Is there anyone near(in-system) us?"
S: Around (parameters: What: sender or receiver, how far: four kilometers.) O: Person, Ask-node (shortened to "?" from now on)
"There is no Viritium in Hodet."
S: Hodet, O: Viritium, Inversion-node (shortened to ¬ from now on)
[More examples to come]
Spoiler: SHOW
How do you like it?
EDIT 3: Complete rewrite, added elegance and hopefully made the concept clearer.
EDIT: Fixed spoiler.