Encoding RDF graphs and/or n3 formulas in triples (Reification)

When I was writing my first n3 parser [1], I had it turn each { ... }
structure (which you then called a Context and now call a Formula)
into a Set of rdf:Statement objects, using an ontology for sets I made
up.

I no longer think that's quite the right modeling.  Your current logic
ontology [2] suggests the right thing is to use your log:conjunction
predicate.  You say its domain is a list of Formulas.  (You call them
"formulae," but I can't decide whether to say formulee or formuliy so
I say formuluz.)   If rdf:Statement is a subclass of log:Formula
(as I think it ought to be), then we can simply say
    { <a> <b> <c>. }
is an rdf:Statement with the usual rdf:subject, etc, information,
and 
    { <a> <b> <c>.  <d> <e> <f>. }
is the log:conjunction of a list of the two rdf:Statements given
there. 

Is that what you had in mind?  Does that seem right?

The one odd thing I see is that log:conjunction doesn't assert its
resulting formula, unlike log:implies.  For them to match in style, it
should be either
    # make a statement of implication, which is an unasserted object
    [ log:if { ... }
      log:then { ... } . ]
or 
    # assert all the statements in a list
    ( :stmt1, :stmt2 ) a log:trueConjunction.

It's kind of a wash which way you go.  "x={...}" lets you turn
assertions back into an unasserted formula, and "x a log:Truth" lets
you assert an unasserted formula.  It just might be nice to have all
the operators-on-formulas behave one way or the other.  (This might
help clear up some confusions [in my mind, at least] about log:forAll
and log:forSome, too.)

     -- sandro

[1] http://www.w3.org/2001/03/flaten3/
[2] http://www.w3.org/2000/10/swap/log

Received on Saturday, 15 December 2001 16:57:14 UTC