# Re: A Rough Guide to Notation3

From: Sandro Hawke <sandro@w3.org>
Date: Fri, 23 Aug 2002 14:47:55 -0400
To: "Peter F. Patel-Schneider" <pfps@research.bell-labs.com>

```

Peter F. Patel-Schneider writes:
> Well, how do you *represent* - and here I mean represent, not encode - the
> following first-order sentence using *only* labeled directed graphs?
>
> 	forall x exists y forall z P(x,y) -> Q(y,z) v S(z,y)

As I mentioned yesterday [1], I believe your example can be
respresented in RDF using a pre-arranged vocabulary for describing
true sentences.  This is a same-syntax extension to RDF, of the sort
one is expected to use in expressing any knowledge with RDF.  (If you
want to talk about widgets, you're expected to do so by creating a
vocabulary for talking about widgets.  I'm suggesting that a viable if
cumbersome way to _say_ "a or b" is to _describe_as_true_ the sentence
"a or b".)

Although compact, that sentence of yours is actually rather complex,
and its description in RDF is verbose.   Your example in my input
language

% Peter's example, in LX with the only predicate being ternary rdf()
(all x (exists y ( all z (
rdf(x, P, y) ->
( rdf(y, Q, z) | rdf(z, S, y) )
)))).

turns into 37 triples, which cwm turns into the RDFXML.   I manually
inserted the entity reference, to make it a little more readable.
It might be nicer with TypeNodes instead of parseType=Resource, but I
don't know an easy way to convert it, and if I do it by hand I'll
surely make a mistake.

<!DOCTYPE rdf:RDF [
<!ENTITY lx "http://www.w3.org/2002/08/LX/RDF/v1#">
]>
<rdf:RDF xmlns="&lx;"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:var="#">

<rdf:Description>
<rdf:type rdf:resource="&lx;Quantification"/>
<rdf:type rdf:resource="&lx;TrueSentence"/>
<subformula rdf:parseType="Resource">
<rdf:type rdf:resource="&lx;Quantification"/>
<subformula rdf:parseType="Resource">
<rdf:type rdf:resource="&lx;Quantification"/>
<subformula rdf:parseType="Resource">
<rdf:type rdf:resource="&lx;Conditional"/>
<condLeft rdf:parseType="Resource">
<rdf:type rdf:resource="&lx;Triple"/>
<objectTerm rdf:resource="#y"/>
<predicateTerm rdf:parseType="Resource">
<rdf:type rdf:resource="&lx;Constant"/>
<denotation rdf:resource="#P"/>
</predicateTerm>
<subjectTerm rdf:resource="#x"/>
</condLeft>
<condRight rdf:parseType="Resource">
<rdf:type rdf:resource="&lx;Disjunction"/>
<disjLeft rdf:parseType="Resource">
<rdf:type rdf:resource="&lx;Triple"/>
<objectTerm rdf:resource="#z"/>
<predicateTerm rdf:parseType="Resource">
<rdf:type rdf:resource="&lx;Constant"/>
<denotation rdf:resource="#Q"/>
</predicateTerm>
<subjectTerm rdf:resource="#y"/>
</disjLeft>
<disjRight rdf:parseType="Resource">
<rdf:type rdf:resource="&lx;Triple"/>
<objectTerm rdf:resource="#y"/>
<predicateTerm rdf:parseType="Resource">
<rdf:type rdf:resource="&lx;Constant"/>
<denotation rdf:resource="#S"/>
</predicateTerm>
<subjectTerm rdf:resource="#z"/>
</disjRight>
</condRight>
</subformula>
<var rdf:resource="#z"/>
</subformula>
<var rdf:resource="#y"/>
</subformula>
<var rdf:resource="#x"/>
</rdf:Description>