Open VladimirAlexiev opened 8 months ago
I like this a lot. This is fairly inline with what I expected. This mean that we only need to include the float value in the instance file. I am a bit on and off on the challenge if we should support the possibility to support both MW and kW as unit for the same profile. In that case we would have to include the unit in the instance file. It would be good if we are documenting how this could be done to show that we evaluated this option. I personally think this would be the best solution.
Great ideas, excited to see CIM moving this way. I have some questions and thoughts.
@VladimirAlexiev I believe the qudt:applicableUnit
property is intended to be derived, not explicitly specified. Its comments point to a good explanation of this here.
Furthermore you speak of leveraging the "default unit" for a certain quantity kind. Can you tell me where this default is specified? It seems you mean qudt:applicableUnit
but I don't think that servess as a default (it also tends to be multivalued).
I am a bit on and off on the challenge if we should support the possibility to support both MW and kW as unit for the same profile. In that case we would have to include the unit in the instance file.
@Sveino That's an interesting point. My first hunch would be to support the flexibility of providing units in the instance data. If left out in the instance data, a default from the ontology can be inferred (if possible).
Finally, are you aware there's also a QUDT SHACL schema? I'd imagine extending the SAHCL validation of the profile with some statements/rules that verify the correct use of units etc. that are specific to a specific profile is highly desired. Not only does it seem more suitable, I also believe it would be more useful, since I'd say fewer people use OWL reasoners than SHACL validators. (Note that I'm not arguing only OWL or only SHACL be used; both could play their own suitable role. Just thinking oud loud.)
That's an interesting point. My first hunch would be to support the flexibility of providing units in the instance data. If left out in the instance data, a default from the ontology can be inferred (if possible). @bartkl remember that we are not really limiting the use of CIM in the semantic web space, but rather for the object oriented implementation. I like flexibility - but that come with a cost. Our current position is that we can defined the unit in the profile.
Finally, are you aware there's also a QUDT SHACL schema? No, but SHACL rules should in general be associated with a profile rather than a vocabulary. There are work being done on QUDT to support reasoning described in OWL. Agree that one does not exclude the other - but they have different purpose.
@Sveino Clear. And yes I agree SHACL should not be used for the vocabulary, I was talking about using SHACL for use in profiles. Just wanted to point out that there exists a QUDT SHACL model we can use for validating profiles.
@bartkl Can you add a link tot eh QUDT SHACL?
@Sveino: QUDT SHACL graph: https://qudt.org/2.1/schema/shacl/qudt
@bartkl You're right, qudt:applicableUnit
is not intended for this, I fixed my last code block to use qudt:unit
.
"default unit" for a certain quantity kind. Can you tell me where this default is specified?
That would be the inverse of qudt:derivedCoherentUnitOfSystem
"unit system in which the unit is derived from the system's base units with a proportionality constant of one".
I think these are the units with conversionMultiplier=1.0
, eg that is the case for https://qudt.org/vocab/unit/W .
But I'll check for all: see (https://github.com/qudt/qudt-public-repo/issues/952).
@bartkl, https://qudt.org/2.1/schema/shacl/qudt is quite big and not modular: https://github.com/qudt/qudt-public-repo/issues/953
https://github.com/Sveino/Inst4CIM-KG/issues/29 is very similar to this but addresses some other aspects.
The latest CIM version that I have (2022-07) eg
IEC61970-600-2_CGMES_3_0_1_ApplicationProfiles\v3.0\RDFSEd2Beta\RDFS\IEC61970-600-2_CGMES_3_0_0_RDFS_501Ed2CD_EQ.rdf
defines data properties something like this:There are serious problems with this representation:
xsd:float
), not any of the "decorations" declared by its "datatype" classcim:ActivePower
(unit, multiplier, etc).owl:DatatypeProperty
. Butcim:ActivePower
is a class, so it cannot be the range of a data propertyActivePower
individuals, it's not a class. It's a QuantityKind (borrowing a term from QUDT)ActivePower
because the same "MW" is used for many other kinds of "Power"A week ago you had a presentation of QUDT and I assume you liked it. Here's what info QUDT includes about these items:
(Sorry this uses long URLs: I got it from https://qudt.org/vocab/unit/MegaW, since the downloaded version 2.1 of 2020-11 that I have is poorer). As you see, it has all the info from CIM above, plus a lot more: links to UNECE and UCUM, prefix and conversionMultiplier, dimension vector, and which quantityKinds it applies to.
Its sibling unit "megawatt per hour" has a bit more info: also link to IEC CDD ("0112/2///62720#UAA225" is called an IRDI).
Here's the quantityKind:
Or see https://qudt.org/vocab/quantitykind/ActivePower for a bit more info and rendered formulas.
My proposal is to:
range
of the data prop and usehasQuantityKind
andapplicableUnit
to bind to those characteristicsqudt:unit
but it would be used in an observation that doesn't leverage the default unitskos:exactMatch
becauseowl:sameAs
semantics would merge (smush) their characteristics.skos:broader
to make a hierarchy, so usingNot only this representation is more correct, it's also a lot simpler than above! It will cut the number of "UoM related terms" from 5n to 2n.