w3c / sdw-sosa-ssn

Repository of the Spatial Data on the Web Working Group for the SOSA/SSN vocabulary
8 stars 5 forks source link

Input, Output, Result, Condition, are roles, and shouldn't be named classes #113

Closed maximelefrancois86 closed 8 months ago

maximelefrancois86 commented 11 months ago

Anything can be an input, an output, a result, or a condition. It's just a role that something has in some description.

The relevant information are the binary relations ssn:hasInput, ssn:hasOutput, sosa:hasResult, ssn:inCondition.

Proposal: deprecate or delete the classes ssn:Input, ssn:Output, sosa:Result, ssn:Condition

dr-shorthair commented 11 months ago

I'm inclined to agree. However, is there a backward-compatibility issue? Do any of the known implementations use these classes?

The same argument could apply to FeatureOfInterest - see #114. When this was brought up in 2016 (?) I think @kjano argued that there was some utility in being able to classify something as 'being of interest in the context of an Observation or Actuation or Sampling'.

maximelefrancois86 commented 11 months ago

I have very little record of usage for these classes. From https://w3c.github.io/sdw/ssn-usage/

ssn:Input is used in 1 dataset ssn:Output is used in 1 dataset sosa:Result is used in 1 dataset ssn:Condition (non-normative) is used in 1 dataset

The situation is a bit different for sosa:FeatureOfInterest, I admit, as it is reported to be used in all 16 dataset in https://w3c.github.io/sdw/ssn-usage/

If we're aiming for a backward-compatible version (I think it's important), then probably we should just:

dr-shorthair commented 11 months ago

OMS uses the Ur-class Any in these situations.

dr-shorthair commented 9 months ago

I'd be OK deprecating these - I don't think they add anything except to help drawing diagrams.

@kjano do you have a view here?

maximelefrancois86 commented 9 months ago

I agree with the proposal

sgrellet commented 9 months ago

I agree as well.

hylkevds commented 8 months ago

There is also the distinction between what is attached to the Procedure and what is attached to the ProcedureExecution.

Even in the second case, an intermediary class may be required, since the inputs and outputs need to be linked to their abstract descriptions of the Procedure. If my Procedure has two input temperatures, my ProcedureExecution will have two values for those temperatures, and it's important to know which value belongs to which input. For example, an oven that can first heat for a minutes at temperature b, then for c minutes at temperature d.

We don't need four Classes for this. Something like a class ParameterDescription and ParameterValue would be better, but I can imagine those already exist elsewhere.

dr-shorthair commented 8 months ago

In #105 I suggested that hadInput would be the property of a ProcedureExecution (was Observation), which distinguishes it from hasInput which applies to Procedure.

However, @maximelefrancois86 noted the potential confusion from just a single letter difference.