W3C home > Mailing lists > Public > www-rdf-interest@w3.org > April 2001

Re: "If" and "else" in RDF

From: Seth Russell <seth@robustai.net>
Date: Sun, 29 Apr 2001 09:13:31 -0700
Message-ID: <008c01c0d0c7$573479a0$b17ba8c0@c1457248a.sttls1.wa.home.com>
To: "Murray Altheim" <altheim@eng.sun.com>, "Danny Ayers" <danny@panlanka.net>
Cc: <info@jan-winkler.de>, <www-rdf-interest@w3.org>
From: "Murray Altheim" <altheim@eng.sun.com>

> You have guys have me really confused. Are you trying to find a way to
> express a material implication relationship, or perform a programmatic
> function? Turn RDF into a programming language? I don't get it. Expressing
> relationships is one thing, actually acting on them is a whole different
> bahoosus.

Thanks, I think you have put you finger on the confusion.  Perhaps it was my
silly post which first started conflating the declarative description of
potential states of affairs with the actual acting on these representations
by an agent to determine the actual state of affairs.

From: "Danny Ayers" <danny@panlanka.net>

> I think the confusion stems from the fact that 'if' and 'then' (/'else')
> commonly used in both declarative and imperative computer languages. In
> declarative context if...then... goes right back to the basic connectives
> propositional logic, where one can say if <something> then <something
> else> - a relationship is stated, there is no processing involved. RDF is
> declarative language (a representation language, whether or not you call
> a programming language is probably irrelevant), so surely this is the
> appropriate context here.

I agree that the confusion is based on the fact that RDF is a declarative
language, whereas "if_then_action" is a programming language expressing
potential changes to states of affairs.   I believe the problem stems from
the idea that a declarative language should always tell the truth.  For the
RDF data model that amounts to saying that every labeled directed arc you
draw, must be deemed true in the model.  You are not supposed to state a
contradiction; but that is exactly what you need to do to declare a

So getting back to Jan's question (and his most recent example from an off
line discussion):

From: "Jan Winkler" <jan_wi@jan-winkler.de>

> if (mything:tax > '100$') then(mything:tax-type = 'not cheap')
> else (mything:tax-type = 'cheap')
> How should I do it without "if-then-else"? (to express a result or an
> inference)

The problem is that to accurately represent that in a labeled directed RDF
graph, you must  end up with a  statement that might look something like

        :Mything:tax  rdfs:label 'cheap' , 'not cheap'.

which is plainly a contradiction.  In other words you are required to
declare potential facts which are in disjoint contexts .... and the formal
logicians out there might object.

I think this actually can be done with no contradiction ... but we will need
to introduce some new concepts.  I have taken a stab at it in the graph at

[1] http://robustai.net/mentography/disjointDecision.gif

Note that nodes that are black on white represent the things in our domain
of discourse and static relationships between them.   The context nodes
(black on orange) allow us to state your "if-then-else" restraint in a way
that is not contradictory.  However it is not meaningful unless some active
process (black on red) actually computes the state of actual affairs (black
on blue).

Hopefully my silly detailed view of things does not add too much to the
confusion ....

Received on Sunday, 29 April 2001 12:17:59 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 22:44:30 UTC