I think this raises some interesting issues, probably for wider discussion.
At the moment the definition of what triples are generated is specified in code (eg fedora.server.resourceIndex.FedoraObjectTripleGenerator_3_0), some are specified in RELS-EXT (and now RELS-INT) some are defined in the DC datastream, and yet others are object or datastream properties defined elsewhere. So a move towards a more declarative specification of what triples are generated would be a good idea I think - moving some of what is effectively specified in imperative java code into the content model architecture, which is effectively I think what you are proposing. I would support that. I think FORMAT_URI fits within that - the specification that this datastream property generates a triple is represented in java; maybe that specification should be declarative within a content model. Similarly, you point out you'd rather not have to have both an XML metadata datastream *and* effectively repeat in RELS-INT the same data, so that it gets propagated to the resource index. I think a parallel to this is the current DC datastream - here we have a case where triples are generated, but they don't have to be added to RELS-EXT - but the specification of what and how those triples are generated is in java. What could be interesting would be to define, at the content model level, *how* certain metadata datastreams should be translated into triples. For instance an XSLT could be defined in the content model specifying a translation to RDF; this would be a more generic solution - and this method could be used for the current DC datastream by including this to-RDF translation in the ContentModel-3.0 declaration. I need to familiarise myself in more detail with your work on Enhanced Content Models! Regards Steve -----Original Message----- From: Asger Blekinge-Rasmussen [mailto:a...@statsbiblioteket.dk] Sent: 03 July 2009 14:10 To: Steve Bayliss Subject: RE: [Fedora-commons-developers] FCREPO-441 ready for code review and merge Hi I have read your answers, and have a much clearer understanding of what you propose. I really feel there are some duplicate responsibility between DS-COMPOSITE-MODEL and RELS-INT. Yes, I know, that DS-COMPOSITE-MODEL is defined on the content model level, and RELS-INT is on the object level. At least it would be a step towards having a more flexible system for specifying datastreams. I would like to work on that. Would it be something you would also be interested in? This reminds me: Should we move attributes like FORMAT_URI, defined at the datastream level into RELS-INT? At the moment we have two ways of specifying properties about datastreams, which feels wrong. Further answers down in the quoted text. Regards On Fri, 2009-07-03 at 13:52 +0200, Steve Bayliss wrote: > I've attempted to answer your questions inline, let me know if my answers > make sense! > > > -----Original Message----- > > From: Asger Blekinge-Rasmussen [mailto:a...@statsbiblioteket.dk] > > Sent: 03 July 2009 12:17 > > To: Steve Bayliss > > Cc: fedora-commons-developers@lists.sourceforge.net > > Subject: RE: [Fedora-commons-developers] FCREPO-441 ready for code review > and merge > > > > > > Okay, let me see if I understand you correctly. > > > > 1. You can repeat information stored in a datastream to the RELS-INT > > stream, to make it accesiable from the Resource index. > > Assuming you are talking about some metadata stored in some other > datastream, yes > (assuming that the metadata is "about" a datastream rather than the object > as a whole). > > So you could for example have an XML metadata datastream which contained > technical > metadata for a particular image datastream, you could then populate RELS-INT > with > this technical metadata so it was available in the resource index. > > > 2. Given the name of the "hasDatastream" relation (which I do not > > recall, but know exist) you can query about objects with certain > > RELS-INT properties. > > There is a fedora-view:disseminates relation created automatically from the > object to each datastream. > > (There are also some other relations created automatically, eg > <some-datastream> <fedora-view:lastModifiedDate> 'some-date' > Similarly the mime-type of a datasatream is automatically propagated > to the resource index as a relationship with the datastream as a subject) > > So yes, you can query about objects with certain RELS-INT properties - you > can make > use of the automatically-created relationship between the object and its > datastreams > to return the URIs of objects that contain datastreams that have certain > properties. > > > There is no way to validate whether or not the properties defined in > > RELS-INT is valid for the datastreams the specify? Or, in other ways, > > how are RELS-INT linked with the specified datastream? > > I'm not sure if I understand what you are asking here - could you give some > example? Let me explain. I was unhappy with having to specify the same data both in the datastream, and in RELS-INT. I was asking if there was a way to make the object of the property some data taken dynamically from the datastream. But this is not what you have been doing. You have made a system for, in a fedora object, specifying object properties with a datastream id as subject. No more, no less. > > RELS-INT is at the object level; the relationships/assertions are "linked" > with specified datastreams by having the datastream URI as the subject, ie > as the rdf:about attribute of the rdf:Description element(s) > > > I do not know if you are familiar with the enhanced content models > > (ecm.sourceforge.net) but we use OWL ontologies (in the content models) > > to specify the contents of the RELS-EXT datastream. I will have to think > > the implications through, but the very same system could easily be used > > to specify rules for required and allowed RELS-INT properties. > > Yes, that does sound feasible. That will then be one of the features added, then. When you make design documents, I will update the enhanced content models. > > > A RELS-INT property, what can it point to? Can I use it to specify a > > relation from one datastream to another? And if this other datastream is > > in another object? Is this allowed? > > Yes, that is fine. The object of the relationship can in fact be either > a literal or any "valid" URI - it can "point" to anything (as is the case > for RELS-EXT). > > Regards > > On Fri, 2009-07-03 at 10:57 +0200, Steve Bayliss wrote: > > No design documents at the moment other than what's written below and > what's > > written in the Tracker item - but feel free to ask if you have specific > > questions. Once it's in the trunk, I will write some documentation on how > > to use it. > > > > Essentially you can do everything that you can do with RELS-EXT, but with > a > > datastream URI as the subject of relationships, rather than a digital > object > > URI (but with some validation restrictions). > > > > Maybe an example would help: > > > > RELS-INT: > > > > <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > > xmlns:exif="http://ns.adobe.com/exif/1.0/"> > > <rdf:Description rdf:about="info:fedora/demo:SmileyPens/MEDIUM_SIZE"> > > <exif:PixelXDimension>320</exif:PixelXDimension> > > <exif:PixelYDimension>240</exif:PixelYDimension> > > </rdf:Description> > > <rdf:Description rdf:about="info:fedora/demo:SmileyPens/FULL_SIZE"> > > <exif:PixelXDimension>800</exif:PixelXDimension> > > <exif:PixelYDimension>600</exif:PixelYDimension> > > </rdf:Description> > > </rdf:RDF> > > > > You could then issue the following (with a Mulgara resource index) to find > > all datastreams with particular image size properties: > > > > select $s $p $o > > from <#ri> > > where > > $s <http://ns.adobe.com/exif/1.0/PixelXDimension> '320' > > and > > $s <http://ns.adobe.com/exif/1.0/PixelYDimension> '240' > > > > (You could modify this to give the digital object URI as well as the > > datastream URI). > > > > Regards > > Steve > > > > > > > > -----Original Message----- > > From: Asger Blekinge-Rasmussen [mailto:a...@statsbiblioteket.dk] > > Sent: 03 July 2009 08:59 > > To: Steve Bayliss > > Cc: fedora-commons-developers@lists.sourceforge.net > > Subject: Re: [Fedora-commons-developers] FCREPO-441 ready for code review > > and merge > > > > > > Hi > > > > I was very much looking forward to this. Do you have any design documents > > written so far? > > > > Depending on some details, this might have great implications for Enhanced > > Content Models > > > > Regards > > > > On Thu, 2009-07-02 at 14:03 +0200, Steve Bayliss wrote: > > > I've created a branch for FCREPO-441, and implemented the necessary > > > changes (created from the trunk this morning). > > > > > > This is now ready for review. > > > > > > Implementation notes: > > > > > > * RDF in RELS-INT is now parsed and triples are propagated to resource > > > index > > > * The subjects of RELS-INT relationships must be syntactically-valid > > > datastreams for the object in which RELS-INT resides (but the > > > datastream does not have to exist) > > > * Multiple subjects are allowed in a single RELS-INT datastream (ie > > > multiple <rdf:Description ref:about="..." ... />), to allow assertions > > > to be made about several datastreams > > > * Validation is otherwise as per RELS-EXT, except Dublin Core > > > assertions are allowed, and some specific fedora-model assertions > > > which are allowed for RELS-EXT are not allowed for RELS-INT > > > * local server demos - image collection demo - contains some examples > > > of RELS-INT, in SmileyPens and SmileyGreetingCard (these are also used > > > in system tests) > > > * No changes made to the API (this will require some discussion and > > > agreement on what should be implemented) > > > * No changes made to the java client application (though of course > > > RELS-INT can be edited as per any other XML datastream) > > > > > > Any volunteers to review this change? > > > > > > If there's any interest I could also create a patch against 3.2.1. > > > > > > Many Thanks > > > Steve > > > > > > ------------------------------------------------------------------------------ _______________________________________________ Fedora-commons-developers mailing list Fedora-commons-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/fedora-commons-developers