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?

  • $\begingroup$ 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. $\endgroup$ Commented Mar 19, 2022 at 16:44
  • 1
    $\begingroup$ @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"? $\endgroup$ Commented Mar 22, 2022 at 8:43
  • $\begingroup$ 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.) $\endgroup$ Commented Mar 22, 2022 at 12:02
  • $\begingroup$ "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". $\endgroup$ Commented Mar 22, 2022 at 12:03
  • $\begingroup$ @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". $\endgroup$ Commented Mar 23, 2022 at 18:30

1 Answer 1


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!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.