-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove Procedure specializations from SOSA #235
Comments
I guess one extra question is : to what extend would we model those 3 subtypes of procedures with element(s) that are specific to each of those (ex : do we want to add extra properties to SamplingProcedure that are raally really specific to it). If none (for now), there is no need to separate each of them individually here apart from the OMS alignment. |
I would say that an Observable Properties model, and an Observing Procedure model, would be the basis of asking questions about these, and SOSA doesnt need to have anything other than a common predicate to link, |
I see SOSA as a registry of concepts too and from that standpoint it's useful to have them separated, even though at the moment they have the same properties. I think if you generalize too much, the concepts are not so useful and even confusing. Also if you keep generalizing property names then you'll end up in the same situation with Sensor/Actuator (they will have the same properties, e.g. To me this is going in the wrong direction. It's useful to have generalized super classes and property names but you also need to keep the concrete ones to make the ontology useful and understandable. |
@alexrobin I understand why you want to use the SOSA ontology as a flat "registry of concepts", but it doesn't strike me as a good design guideline. You argument goes the other way too. Right now, the only thing that differentiates an ObservingProcedure from a SamplingProcedure is the label and the class it links to. Unless there is a materialized / structural explanation for what makes them different, what is the point of specializing a Procedure? |
Agreed 17 July 2024 to move these to the sosa-oms namespace |
See preview https://raw.githack.com/w3c/sdw-sosa-ssn/225-madebysystem/ssn/index.html#OMS-Alignment-New-Terms |
I don't get it. |
From OMS : "The conceptual schema specified in this document is in accordance with the Unified Modelling Language.." while SOSA/SSN is an ontology. |
@oldskeptic The main reason why we revived the SOSA-SSN group was to merge the work from OMS back into SOSA. If we keep everything new introduced by OMS outside of SOSA, we're not really achieving this goal. Besides, the only reason why the procedure specializations are identical is because we chose them to be. We could very well have chosen to create more specific properties just like we did for System specializations. I would be ok if the |
@rob-metalinkage The only reason why you can figure out a procedure is of a given subtype (i.e. observing, actuating or sampling) if it's not yet implemented by any System is by looking at the associated property. (and BTW I don't think the Procedure->System association should be mandated as it is not scalable so we should not rely on it). However I don't see how you can differentiate Also, I think we have it backward. It would make more sense to keep only Property and drop the Procedures and Systems, however, are intended to do only one of those things: observe, actuate or sample. And this is known at the time you create the instance or subclass, so it makes sense to have specializations. |
+1 on making sosa-oms normative. This had been my assumption to date. Then all you'd need to define is I'm actually wondering if this should be in the Alignments section as in contrast to the other alignments, the OMS Alignment Module has New Terms. On I hadn't caught the specialized
As with all OWL Object Properties, sosa:implementedBy is not mandated, just a possibility, just like the inverse sosa:implements |
Yes, this is the solution. |
These were in the 2017 edition. |
Indeed. OWA says that nothing is 'mandated'. But there is a general relationship between procedures and systems which is captured by these terms. |
I am also in favour of this simplification. Perhaps ObservableProperty and ActuableProperty can be "marked" as deprecated. And thus feature less proeminently in the diagrams. |
Please make this a separate issue. |
Closed by #226 |
I probably missed a big part of this conversation but it seems that we lost Furthermore, since |
We removed the procedure specialisations as part of a cull of new terms where their definitions did not seem to be very distinct. Do they have different properties to the general case? Do we have evidence of implementation? I admit this one was closest to the edge for me. |
@alexrobin When those specialisations were removed there no properties or associations telling them apart. Everything was already concentrated in the Procedure class. In the context you put forth, I believe the alignment could be made by declaring the |
@ldesousa I am aware that in the current model, the properties are identical, but from a discovery perspective, do we have a way to know that a procedure is either Observing, Sampling or Actuating? Once all kind of procedures are registered in an ontology, it seems important to be able to distinguish these types easily, w/o having to create convoluted SPARQL queries. In general, it also still seems odd to me that we would have separate Execution and System classes for the 3 flavors, but not for Procedures. As I said before, the fact that they have identical properties is more the result of a choice of words than anything else (if we generalize property names enough, then all Executions could end up with the same properties as well, same for Systems). Conceptually, the 3 kinds of procedures exist, just like for Executions and Systems. In this case, I am afraid that our quest for simplification is going to make life harder in the end... |
The reasoning for removal was the lack specific associations or properties to distinguish between the three sub-classes. Regarding discovery your questions are valid, however what a Procedure actually does is context dependent. Let me offer a simple example: soil sieving. A sample of soil material is collected on the field and transported to the lab. There the sample is sieved tto separate the fine earth (particles smaller than 2 mm across) from coarse fragments. The sieving action produces a result, the fraction of fine earth in the soil material, and two new samples: one with the fine earth and another with the coarse fragments. Each of the latter are subject to further observations individually. Therefore the sieving procedure is associated to both Observation instances and Sampling instances. A discovery mechanism based solely on SOSA/SSN would thus need to search for observations or samples in order to determine which procedure(s) are implied in each. Note also newly introduced predicates such as SELECT ?p
WHERE
{
?o a sosa:Observation ;
?o sosa:usedProcedure ?p .
} |
@ldesousa Yes, that's how I understand the current model. But the consequence is that there is no way to discover specific subtypes of procedures if they are not (yet) associated to a result. This is a pity because I can see many use cases where procedures would be registered before they are used. |
Procedure registration (and Discovery) is a valid use case. The question is whether supporting it is in scope for SSN. We have ruled specific property- and system-models out of scope. But, as you have noted, we did go as far as distinguishing three classes of system, even though they had no distinct model or axiomatization. @ldesousa allowing a procedure instance to be a member of more than one class is not a problem in RDF. So I'm not sure your argument holds up on ambiguity grounds. Furthermore, the specific sieve that implements the procedure would be both a sampler and sensor. |
@dr-shorthair Thanks for chiming in. Yes I really believe this lack of parallelism between Procedure subtypes and System subtypes is conceptually strange. I understand the argument that we have no specific properties for the procedure subtypes at the moment but this can very well change in the future (and this way we will have the proper placeholders for them) and, in any case, I'm not sure this alone is an argument for removing a class that does exist conceptually. @ldesousa I would really be thankful if we could reintroduce these classes because it solves a big issue for us in Connected Systems (and I suspect for others as well), and I don't think it hurts anything. Thanks for your consideration. |
Regarding the 'parallelism' argument, the key relationship at the generalized (abstract?) level is
So here are where the three (potential) specializations would sit - replace
I can see the merits of having those relationships relate to the specialized forms of Procedure. If we were to (re-)introduce these, then we need to consider the axiomatization and backward-compatibility. In the SOSA modules: in sosa-actuation.ttl
in sosa-observation.ttl
in sosa-sampling.ttl
We have three new classes for Procedures (alongside the three old classes for Systems) which are not axiomatically related to the superclass at the SOSA level. So we add them into the Then in the SSN modules: in ssn-actuation.ttl
in ssn-observation.ttl
in ssn-sampling.ttl
The guarded restrictions relating to |
@dr-shorthair Thanks for this proposal. I agree that specializing the |
Discussed at length in 2025-01-15 telecon. The symmetry argument is acknowledged. Particularly since Pruning proposed new terms was partly motivated by the need for 'evidence of implementation'. The OMS team can provide evidence for Some discomfort about the lack of specific content models for |
What I'd like to see is a case where the contents of What makes a |
Note that in the RDF proposed above, the focus is on modifying the range of
|
@dr-shorthair Yes, I confirm that the Connected Systems group will be able to provide proof of implementation for @oldskeptic I don't think the choice of classes should be driven by their contents. The reason why the content model is what it is today is because we haven't really dug into the details of how a procedure should be described and left that up to implementations. But since the specializations exist conceptually, I think it is important to define the corresponding classes for implementations to plug into and provide appropriate details. Depending on how it's used, the contents of the different specializations might be similar (for example if the content is just a list of steps), but it could also differ greatly. In any case, by providing separate classes, whatever the contents provided by an implementation, there will be a common way of distinguishing the specialized procedures. This means that one doesn't need to look at the details of the procedure description to figure out if it can be applied to an observation, a sampling or an actuation. Otherwise, I bet everybody will come up with implementation specific properties to achieve the same (and that would be a pity...) |
Following on from the discussion in #225
We added
ObservingProcedure
,SamplingProcedure
to SOSA as part of the OMS alignment, and thenActuatingProcedure
for consistency.However, it is not clear that they have much utility or significance in the context of SSN.
sosa:usedProcedure
fromsosa:Procedure
tososa:ObservingProcedure
might break backward compatibility.We were perhaps a bit too quick in adding these specializations.
My work looking at the consistency of the predicates has exposed this.
(They could be moved back to the
sosa-oms:
namespace alongsidesosa-oms:PreparationProcedure
.)The text was updated successfully, but these errors were encountered: