[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: resource value-type and container resource lifecycle
Kaz, We discussed this topic on the TC telecon yesterday. Here is a summary of what I said, and some additional clarification. Please refer to the current version of the spec [1]. Fig. 6 shows all of the resource types. All of the resources types except for Target and Measure are top-level resources. A top-level resource has a URI that you can GET, PUT, and DELETE. Any property of a top-level resource that refers to another top-level resource should be described in the shape as having: oslc:valueType = oslc:Resource oslc:representation = oslc:Reference Target and Measure are "inline resources". This means that they are created when their parent top-level resource is created, and they have URIs that are relative to the URIs of their parent top-level resource. Artifact is the parent of Target and Measure resources. Measurement is the parent of Measure resources. I recommend that we give Target and Measure resources URIs that use fragment identifiers. The alternative is to use blank nodes (oslc:LocalResource), but that prevents references to Target and Measure, e.g. in SPARQL queries or PATCH requests. We should avoid blank nodes and use fragment identifiers. For example, suppose http://example.com/promcode/item/42 is the URI of an Artifact resource and http://example.com/promcode/measurement/137 is the URI of a Measurement resource. Then the URIs of Target and Measure resources might be: http://example.com/promcode/item/42#target-3 http://example.com/promcode/item/42#measure-12 http://example.com/promcode/measurement/137#measure-58 There are three properties that refer to inline resources. These are: promcode:target (from Artifact to Target) promcode:determines (from Target to Measure) promcode:observes (from Measurement to Measure). These properties should be described in the shape as having: oslc:valueType = oslc:Resource oslc:representation = oslc:Inline During the telecon, I referred to Target and Measure as "local resources", but that would only be correct if we used blank nodes for them. Experience has shown that blank nodes are problematic and should be avoided. The only situation in which a blank node should be used is when the URI of a resource is unknown. But that is not the situation here since we can easily created URIs using fragment identifiers. Therefore, let's refer to Target and Measure as inline resources from now on. When any resource is deleted, all of the resources that depend on it must also be deleted. This includes all top-level or inline resources. Therefore, when an Artifact is deleted, the MeasurementContainer and all inlined Target resources must be deleted. When a Target is deleted, all inlined Measure resources must be deleted. When MeasurementContainer is deleted, all Measurement resources must be deleted. When a Measurement resource is deleted, all inlined Measure resources must be deleted. Note that Target and Measurement link to distinct instances of Measure resources. Therefore, when comparing a Target to Measurements, we need to compare Measure resources by value, not reference. [1] https://tools.oasis-open.org/version-control/browse/wsvn/oslc-promcode/shape/trunk/spec.html -- Arthur On Sun, Jun 7, 2015 at 9:57 PM, Kazuhiro Funakoshi <k-f@bk.jp.nec.com> wrote: > Hi Arthur, > > We had a local discussion with sample implementation team last Friday. > I think we had not discussed value-type specification in shape documents > yet, especially about those links from/to LDP container resources. > One question is, which resources can be a local resource? We need re-think > of that. > > Followings are my poor understanding relates to LDP containers. Could you > please point out if they are wrong? > > When a Project resource is created, PlanContainer, ReportContainer, > ManagedItemContainer, RiskCollectionContainer and IssueCollectionContainer > will automatically be generated. > > These container resources should be identified with a URI, thus their > inbound links are restricted to be oslc:Resource (not oslc:LocalResource). > Same for out-bound ldp:contains links, right? > > We need support deletion of resources like Artifact. When we delete an > Artifact, a MeasurementContainer and Measurement(s) may also be deleted. > What happens to a Target? Since a Target may have exactly one out-bound link > to an Artifact, should the Target resource also be deleted? > > Thank you in advance, > Kaz >
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]