============================================================= PEG model_management--tjl: What are Spaces in the new system? ============================================================= :Author: Tuomas J. Lukka :Last-Modified: $Date: 2003/04/02 17:03:07 $ :Revision: $Revision: 1.1 $ :Status: Incomplete The Space system was hastily ported from Gzz for the demo deadline. It needs rethinking. Issues ====== - What are the relevant concepts in this PEG? RESOLVED: - RDF Model - RDF Node - Node content - Xanalogical transclusions - Xanalogical links - Why the abbreviated name? RESOLVED: This is a name that will be written SO often that acronymizing it is appropriate. All views &c will carry an instance of this class. - Do we really need the "home" member in FFC? Introduction ============ First, let's reiterate some important differences from Gzz's Space construction. In Gzz, a Cell was bound to its Space, and Space also provided the facilities for getting a Cell's content. In Jena, the situation is dramatically different. Actually, I think it's better; more natural for RDF at least. RDF nodes and RDF statements are completely independent of the Model, and the RDF Model ("space") is just a collection of Statements, with some optimizations. For Fenfire, we do still need some abstract notion of a node's content; basically, a mapping between nodes and enfilades, as well an index for use in xu links. One alternative would be to wrap RDFNodes into Cell-like objects but that would be very inefficient as well as inelegant. Changes ======= I propose the following FFC (FenFire Context) class:: package org.fenfire; class FFC { public jena.Model model; RDFNode home; NodeContent content; EnfiladeOverlapIndex enfiladeOverlap; XuIndexer xuLinks; } (replace ``jena.`` by ``com.hp.hpl.mesa.rdf.jena.model.``) This class would be frozen at birth. at the same time, remove for now IndexManager. The org.fenfire.NodeContent interface is defined as follows:: class NodeContent { /** Get the vstream in this cell. * Never returns null. */ Enfilade1D getEnfilade(RDFNode node); /** Set the vstream in this cell. */ void setEnfilade(RDFNode node, Enfilade1D vstream); } This class would also be frozen. The classes EnfiladeOverlapIndex and XuIndexer would also be frozen.