Adam Lally wrote:
On 12/11/06, Thilo Goetz <[EMAIL PROTECTED]> wrote:
The heap? How does that come into the picture?
I just meant that the CAS is where the actual data (the
FeatureStructures) live.
From an interface point of view, does it matter? As I understand it,
you can neither create nor access FSs in the CasContainer (I'm just
calling it that to avoid confusion, not because I think that's a good
name). Or can you? What is the division of labor here?
What about the type system? Is that accessible from the CasView, or
just from the CAS?
Logically, the TypeSystem belongs to the CAS (all views share the same
type system). But the CasView could certainly have a convenience
method for accessing it as well.
Ok, so then you only need the CasContainer to create and access views,
right? So from an API point of view, the old CAS API has a lot more in
common with the CasView than with the CasContainer.
So the we have a meta-CAS that holds the type system info and all the
concrete CASes with the actual data.
I see there as being only one concrete CAS that contains all the data.
The CasViews just have different indexes over that data. A single FS
could belong (i.e. be indexed in) more than one CasView.
Also if we serialize the analysis results I see that as serializing a
single CAS, even though there may be multiple views. Single views
aren't easily serializable since references between FSs in different
views are allowed.
You're probably right, but I'm not there yet. I'd like to get the
concepts sorted out in my head before I get to implementation details
like where the heap lives and how we do serialization.
So really, what we call the
CasView I would call the CAS, and that other thing is a CAS container.
All CASes in the same container share the type system and can also share
FSs.
<snip/>
Or we could give up on the word CAS completely and introduce two new
ones. That might be the least confusing.
Since we've already been using the term "view" in UIMA for a while (in
method names and documentation, even if not in the actual interface
name), I think it would be nice to try to make that terminology
continue to work.
-Adam
I don't know about that. I certainly wouldn't want to keep calling what
I call the CasContainer the CAS. That may make sense from a 10.000ft
view, but if you look at the API/interface level, there is very little
the old CAS interface and the new CasContainer interface have in common.
For somebody who hasn't been using views, a CasView is just like a
CAS, while the CasContainer is a new animal. The fact that FSs can be
cross-reference doesn't bother me. Do we keep all those FSs on a single
heap, or do we have one for each view? That's an implementation detail
that may change tomorrow, and it should not affect our users at all.
--Thilo