# Are there logical devices similar to "existential variables" or "blank nodes" of Semantic Web?

In Semantic Web, alongside permanent names of things also "temporary names" named "existential variables" or "blank nodes" denoted as "_:label" are used. All three terms ("temporary name", "existential variable", "blank node") used in the previous sentence don't sound intuitive to me, but I have no intuitive term for this logical device.

Alternatively to the question in title, I could ask another question: the use of a name in a logical statement implies existence of its denotatum. Is there any research in logic of this phenomenon?

• Could you please point to a formal description of the temporary names in the Semantic Web? At first sight it looks like just a simple tagging mechanism. Mar 19 at 16:44
• @AndrejBauer I am not sure there is a formal description of "existential variables", "blank names", "temporary names" -- these even lack a good name. The best reference I can give is the standardized formal language used in Semantic Web, where these probably occur for the first time w3.org/TeamSubmission/n3/#bnodes. However, this or other documents on this topic are difficult to read, and probably the explanation in Louis' answer below is among the best which can be found. What is "tagging mechanism"? Mar 22 at 8:43
• The way I am reading this is that _ is used for "gensyming", i.e., generation of unique identifiers that cannot be referred to. Suppose you replace all the _ with foo$1, foo$2, foo$3, ... in order of appearance. Then we have the same effect, don't we? (Assuming $ is not a valid character in an identifier.) Mar 22 at 12:02
• "Existential variable" refers to a variable which must be instantiated before a proof or a construction is considered valid. Think of it as an "unfulfilled obligation" or a "promise". Mar 22 at 12:03
• @AndrejBauer The colon is used to separate a namespace from a name. Thus, the underscore "_" looks like the name of a namespace - a "space of termporary names". This remark refers to your comment before last. As to your last comment, it sounds very interesting and I would appreciate if you put down more detail in that direction -- say as an "Answer". Mar 23 at 18:30

I cannot answer for research in logic about blank but I can try to explain blank nodes. In my (possibly faulty) comprehension of the W3C standard, blank nodes are "existential variables" in the logical sense quantified at the "dataset" level (i.e. a collection of RDF graphs). The underlying idea behind blank nodes is to acknowledge that something exists but we don't know its exact value and this blank node can be shared among different triples.

For instance if you have a dataset saying that Alice and Bob are brother and sister (e.g. with a shared parent) you can say something like

ex:Alice ex:hasParent _:a .
ex:Bob ex:hasParent _:a .
ex:Charles ex:hasParent _:b .


Here we can talk about the common parent of Alice and Bob but you know that Charles has a parent that might be different (it might be that :b=:a) we just don't know exactly who it is. In comparison if you just say "unknown" instead you loose the information about the fact that Alice and Bob share a parent who is unknown. In logical form, with predicates, you can say the same thing with:

$$\exists a,b ~~ \text{hasParent}(\text{Alice},a) \land \text{hasParent}(\text{Bob},a) \land \text{hasParent}(\text{Charles},b)$$

Hope this helps!