ASN issue: leaf class == visible class?

I've got an issue in the abstract syntax notation.  This e-mail is
perhaps more a brain-dump than a cogent argument or proposal; I hope
it's good enough.

Let's call ASN syntactic classes with no declared subclasses "leaf
classes".  Let's call the others, with one or more declared subclasses
"non-leaf". 

Further, let's say a "visible" class is one whose name might be
transmitted as part of serializing an instance of it.  An "invisible"
class is one whose name will never be transmitted.  (Invisible classes
cannot be instantiated.  They correspond essentially to "abstract base
classes" and Java "interfaces".)

The issue, then, is this: Shall we say Leaf and Visible are equivalent
classes?  I suggest "Yes". 

An example:

    class NegationAsFailure

         subclass StratifiedNAF

	 subclass WellFoundedNAF

	 subclass StableModelNAF

Would we ever want to allow people to transmit something, saying just
that it is a "NegationAsFailure", but not saying which kind it is?  

I think not.  I think if we wanted that, we could do it more clearly
as:

    class NegationAsFailure

         subclass StratifiedNAF

	 subclass WellFoundedNAF

	 subclass StableModelNAF

         subclass UnspecifiedNAF

Looking at the current from Horn Dialect drafts:

     class CLAUSE
     
        subclass ATOMIC
     
        subclass Implies
           property if: CONDITION
           property then: ATOMIC
     
     class ATOMIC
     
         subclass Equal
            property side: list of TERM
     
         subclass Uniterm

... can you imagine wanting to subclass/extend Implies, Equal, or
Uniterm?  If so, would it be okay to make other changes so that it's
reasonable to have the extended class become invisible?

If we need visibility to be independent from leaf-ness, then I think we
need to add an "invisible" keyword to ASN.  The drafts use
all-upper-case to indicate which classes are invisible, but that
shouldn't be what the software uses.)  I also need some way to say this
in OWL.  Maybe invisible classes are the same as
disjoint-union-superclasses?   Or can we just stay with Leaf==Visible?

Thoughts?

     -- Sandro

Received on Thursday, 12 July 2007 18:35:36 UTC