Hi

I am not sure I understood your post entirely. I have inlined some
questions on the parts I find unclear.

On Mon, 2009-07-06 at 17:15 +0200, Daniel Davis wrote:
> I am concerned that the Fedora persistence/service model and the
> global information model are being conflated.  A public API is needed
> to facilitate persistence operations but it is easy in Fedora to
> overlap the persistence/service model with the public information
> model which is intended to suitable for use in graphs and in the Web
> architecture.  Extending Fedora with writable service methods may make
> the separation more clear but for now it is easy to conflate the
> global information model and the persistence/service model.
Indeed!

>   It is not helpful that there are two ways to access content in
> Fedora, datastream disseminations and DO Service Methods (aka
> Operations)(formerly known as disseminators). Unfortunately,
> datastream disseminators are easy to understand and use while service
> methods are much harder and most applications avoid them.
Indeed.

>  Fedora must provide a clear means to encapsulate the content or
> Fedora will have problems evolving.  Technically, datastream
> disseminations don't break encapsulation but having them facilitates
> thinking in terms of concrete datastreams instead of abstract stable
> resources.
Indeed.

>   If you make statements about the datastream itself you may step over
> the line since the internal representation will change given enough
> time and may break the truthfulness of statements made in global
> models if internal information is exposed.
This is the old conflict between interfaces and implementations.




> 
> Internal use of RDF to support the encapsulation is a wonderful
> generic approach to support encapsulation.  But statements in the
> external (global) model must only be about facts which should be known
> externally (globally) and for a number of reasons, particularly
> preservation, should be relatively stable.
Indeed.


>   Externally, datastreams should likely not be objects and it would be
> best if external models avoid statements about concrete datastreams
> (and likely datastream disseminations) going forward.  Statements
> about the internal structure of the DO should not show up in external
> models.  External models should ignore the existence of datastreams
> and assert statements about the DOs, services and methods---you can
> get the same functionality without making statements about internal
> persistence artifacts that must change over time if Fedora is to
> evolve.
I agree in the "should" statements. External models "should" not depend
on the internal representation. I will say, however, that currently this
"should" is not possible. To much is directly linked to the internal
representation, that not depending on it is achievable.


I have a general problem with the Fedora API, which is perhaps
understandably, given that I am the guy with the EnhancedContentModels.
The API is object centric, not class centric.
You can get the list of methods/services on an object, but there is no
easy or even hard way to get the list of services implied by a content
model.
As such, you have individual objects, decorated with services, not
classes of objects.
So, the one method that I would really like to see would, on a content
model, give me the list of services that the subscribing data objects
would have.



>   If mapping to the Web architecture, the DO-service-method-parameters
> should preferably be a stable URI which also can be often be used in
> the Fedora architecture to cause the streaming of a serialized
> representation.  It would be desirable that external URIs refer to
> some essential characteristic of the DO and its content that will
> always be true even if the concrete implementation of the object
> changes.
Indeed.


> 
> Internal models should be free to make statements about the internal
> structure of the Fedora object and, I think but am not sure, can use
> statements which are derived from external views of objects since such
> statements are supposed to be stable.
Indeed.


>   However, there needs to be a separation of concerns between the
> external (global) and internal views. Care should be taken about the
> visibility of internal statements.  They cannot be held to be globally
> true.  Internal information can be presented to the external model
> through the use of URIs established through the CMA using
> DO-service-method-parameters exercising care that there is an
> abstraction placed between the internal model and the external model.
> This enables statements made to global URIs to be globally true.
I am not sure I understand what you are saying here. 


> 
> There still needs to be methods that permit access to the internal
> structures of the DO so that "privileged" applications can create the
> concrete persisted internal content.  These operations need to know
> about datastreams. 
And, now, for the first time, do I understand what caused the separation
between API-A and API-M. 





> I am not sure we know enough to create APIs which absolutely and
> clearly separate the external and internal models.  I think that we
> need to keep the separation of the models clear in our minds and
> exercise care when we use them and in the evolution of Fedora's
> design.
I think it might be time to rethink the API and the evolution in Fedora
based on this separation. I am not aware if there is design guidelines
in regards to the separation.



>  In particular, I think we need to be careful when we extract this
> information into a triple-store where it is easy to combine/conflate
> the two models and inadvertently mix statements whose truthfulness is
> long term with transient implementation-specific information.
> 
So, we should hold on integrating RELS-INT?




Regards



> Daniel W. Davis
> http://fedora-commons.org
> [email protected]
> (607) 255-6090 (Office)
> 
> 
> 
> Asger Blekinge-Rasmussen wrote: 
> > Hi Frank
> > 
> > Thanks for the reply.
> > 
> > Yes, you definitely nailed down the the missing points.
> > 
> > RELS-INT and RELS-EXT are misnamed, for the very reason you wrote. No
> > contest there.
> > 
> > About the RELS-EXT relations to datastreams in the object, that was a
> > hack.
> > A fedora object has some relation, fedora-view:disseminates I think, to
> > each datastream belonging to this object. Since this is the same
> > relation to every datastream, it is not possible to define a OWL 
> > allValuesFrom restriction. In fact it is possible, but it has the effect
> > of demanding that all datastreams in the object is of the specified
> > class. Similarly, cardinality on that relation can only specify the
> > total number of datastreams.
> > I got around this by making my own relation (in RELS-EXT) to the
> > datastreams in the same object, but as you point out, these relations
> > could go to datastreams in another object.
> > 
> > Anyway, the introduction of RELS-INT does bring the current object
> > serialisation (foxml) into question. A datastream object conceptually
> > contains
> >   A ID
> >   Object properties (in RELS-INT)
> >   Content (In the datastream proper)
> >   Versioning (In the datastream proper)
> >   Audit trail (in the AUDIT datastream in the Object)
> > 
> > So a datastream object are serialised into three datastreams, it self,
> > RELS-INT and AUDIT. And the fedora object then gets a relation to this
> > object.
> > To accomadate the new conceptual structure, it would probably be simpler
> > to serialise each datastream to it's own xml file, and make links from
> > the fedora object to each datastream it "contains".
> > The problem with this approach is that the traditional Fedora objects
> > will just become a collection of datastreams, and properties about this
> > collection, and not data in itself. This could easily be modelled with a
> > datastream object, and thus we have come full circle. Objects will in
> > effect reduced to having just one datastream.
> > This idea is starting to scare me somewhat....
> > 
> > Regards
> > 
> > 
> > 
> > On Mon, 2009-07-06 at 12:14 +0200, Schwichtenberg, Frank wrote:
> >   
> > > Hi Asger,
> > > I absolutely agree with you. That seems to be the logical enhancement of 
> > > Enhanced Content Models. :-)
> > > 
> > > I just wonder if the idea of RELS-EXT and RELS-INT holds. So, you are 
> > > right pointing out datastreams are entities (or objects), now. They have 
> > > URIs and it is possible to make statements in RELS-INT with datastreams 
> > > of other Fedora objects as object(-of-the-statement). So far your idea to 
> > > enhance Enhanced Content Models, which is great I think.
> > > 
> > > My criticism on "the idea of RELS-EXT and RELS-INT" would be: One can 
> > > refer datastreams extern to the Fedora object the RELS-INT belongs to. 
> > > And it is possible to refer entire Fedora objects from RELS-INT. 
> > > Obviously it is possible to refer datastreams from RELS-EXT, also such of 
> > > the Fedora object the RELS-EXT belongs to. So "EXT" and "INT" seems to be 
> > > out-dated. The difference between RELS-EXT and RELS-INT has nothing to do 
> > > with relations to external or internal entities. But with making 
> > > statements about the object (RELS-EXT) or about parts of the object 
> > > (RELS-INT). So datastream URIs in statements (both in RELS-EXT and 
> > > RELS-INT) bring in possible complexity.
> > > 
> > > I don't want to say that's bad; just thoughts. Maybe that is something 
> > > people are waiting for. And the possibility to specify datastream 
> > > cardinality (maybe min and max) is great.
> > > 
> > > Maybe that just brings us back to the question, why not just allow 
> > > datastreams of RDF/XML content which are automatically get propagated to 
> > > the resource index.
> > > 
> > > Regards, Frank
> > > 
> > >     
> > > > -----Ursprüngliche Nachricht-----
> > > > Von: Asger Blekinge-Rasmussen [mailto:[email protected]]
> > > > Gesendet: Freitag, 3. Juli 2009 20:39
> > > > An: [email protected]
> > > > Betreff: [Fedora-commons-developers] How RELS-INT breaks the Fedora
> > > > paradigm and opens the door for new and innovative solutions to old
> > > > problems
> > > > 
> > > > Hi
> > > > 
> > > > Steve Bayliss have just finished adding the RELS-INT datastream to
> > > > Fedora, as announced on this list. I have been in some discussion with
> > > > him, as also shown on this list. This discussion have granted me a
> > > > chance to fully understand the conceptual change that RELS-INT brings.
> > > > 
> > > > In the semantic web paradigm, everything with an URI is a thing, which
> > > > can have properties and so on. But in Fedora, so far only Objects could
> > > > have properties (relations)
> > > > 
> > > > This all changed with the introduction of RELS-INT. Steve Bayliss have
> > > > made a system for, in a fedora object, specifying object properties
> > > > with
> > > > a datastream id as subject. No more, no less.
> > > > 
> > > > So datastreams are now objects, so to speak. They have a URI, and they
> > > > can have properties themselves. Formerly, there was the Fedora Object,
> > > > which had datastreams (blobs of data) and properties. Now there is the
> > > > Datastream, which has ONE blob of data, and properties. Fedora objects
> > > > now has a list of Datastreams, and properties for the object itself.
> > > > So we have two levels of objects. This is the way the Fedora paradigm
> > > > is
> > > > broken.
> > > > 
> > > > Big deal? Yes. Because if the datastreams can have relations, they can
> > > > have the hasModel/rdf:type relation. So, suddently we have a framework
> > > > for talking about the classes of datastreams. Now, like the content
> > > > models, there is the possibility to specify restrictions and demands on
> > > > the datastream, both it's relations and it's content.
> > > > 
> > > > Some might remember the old problem with the DS-COMPOSITE-MODEL
> > > > datastream. There is no way to specify datastreams that might be there,
> > > > only datastreams that have to be there, and there is no way to specify
> > > > cardinality for datastreams.
> > > > With the use of RELS-INT and enhanced content models, we can now
> > > > specify
> > > > something close to a solution to this problem.
> > > > Enhanced Content Models give the ability to define an ontology for
> > > > subscribing objects. This could include relations from the object to
> > > > the
> > > > objects datastreams. On such relations, Enhanced COntent Models give
> > > > the
> > > > ability to make cardinality demands, and specify the class/content
> > > > model
> > > > of range.
> > > > So, in the RELS-EXT for an object you could make this blob
> > > > 
> > > > <rdf:Description rdf:about="info:fedora/demo:object1">
> > > >   <fedora-system:hasModel rdf:resource="info:fedora/demo:cm1"/>
> > > >   <demo:hasDCdatastream rdf:resource="info:fedora/demo:object1/DC1"/>
> > > >   <demo:hasDCdatastream rdf:resource="info:fedora/demo:object1/DC2"/>
> > > >   <demo:hasDCdatastream rdf:resource="info:fedora/demo:object1/DC3"/>
> > > > </rdf:Description>
> > > > 
> > > > Then in the ontology we would specify something like
> > > > <owl:Class rdf:about="info:fedora/doms:ContentModel_DOMS">
> > > > 
> > > >  <rdfs:subClassOf>
> > > >     <owl:Restriction>
> > > >        <owl:onProperty rdf:resource="#hasDCdatastream"/>
> > > >           <owl:minCardinality
> > > > rdf:datatype="http://www.w3.org/2001/XMLSchema#integer";>3</owl:minCardi
> > > > nality>
> > > >     </owl:Restriction>
> > > >  </rdfs:subClassOf>
> > > >  <rdfs:subClassOf>
> > > >     <owl:Restriction>
> > > >        <owl:onProperty rdf:resource="#hasDCdatastream"/>
> > > >           <owl:allValuesFrom
> > > > 
> > > > rdf:resource="info:fedora/demo:DCdatastreamcontentModel"/>
> > > >           </owl:Restriction>
> > > >  </rdfs:subClassOf>
> > > > </owl:Class>
> > > > This basically says that demo:object1 must have at least three
> > > > hasDCdatastream relations to things of the type
> > > > demo:DCdatastreamcontentModel
> > > > 
> > > > This in the RELS-INT in demo:object1
> > > > <rdf:Description rdf:about="info:fedora/demo:object1/DC1">
> > > >   <fedora-system:hasModel
> > > > rdf:resource="info:fedora/demo:DCdatastramcontentModel"/>
> > > > </rdf:Description>
> > > > <rdf:Description rdf:about="info:fedora/demo:object1/DC2">
> > > >   <fedora-system:hasModel
> > > > rdf:resource="info:fedora/demo:DCdatastramcontentModel"/>
> > > > </rdf:Description>
> > > > <rdf:Description rdf:about="info:fedora/demo:object1/DC3">
> > > >   <fedora-system:hasModel
> > > > rdf:resource="info:fedora/demo:DCdatastramcontentModel"/>
> > > > </rdf:Description>
> > > > 
> > > > 
> > > > And voila, you have specified that objects of demo:cm1 must have at
> > > > least three datastreams, which all have a specific content model.
> > > > 
> > > > 
> > > > I have not fully thought everything above through, but I hope you get
> > > > the gist of it. I would like to hear other peoples thoughts on this.
> > > > Think of this as a preliminary on how RELS-INT can be used in enhanced
> > > > content models
> > > > 
> > > > Regards
> > > > Asger
> > > > 
> > > > Enhanced content models to be found on ecm.sourceforge.net
> > > > 
> > > > 
> > > > 
> > > > -----------------------------------------------------------------------
> > > > -------
> > > > _______________________________________________
> > > > Fedora-commons-developers mailing list
> > > > [email protected]
> > > > https://lists.sourceforge.net/lists/listinfo/fedora-commons-developers
> > > >       
> > > -------------------------------------------------------
> > > 
> > > Fachinformationszentrum Karlsruhe, Gesellschaft für 
> > > wissenschaftlich-technische Information mbH. 
> > > Sitz der Gesellschaft: Eggenstein-Leopoldshafen, Amtsgericht Mannheim HRB 
> > > 101892. 
> > > Geschäftsführerin: Sabine Brünger-Weilandt. 
> > > Vorsitzender des Aufsichtsrats: MinR Hermann Riehl.
> > > 
> > > 
> > >     
> > 
> > 
> > ------------------------------------------------------------------------------
> > _______________________________________________
> > Fedora-commons-developers mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/fedora-commons-developers
> >   


------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time, 
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize  
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
Fedora-commons-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fedora-commons-developers

Reply via email to