Skip to content
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

confusion unit vs hasUnit; mention value in QuantityValue; give skos:example #969

Open
VladimirAlexiev opened this issue Sep 12, 2024 · 4 comments

Comments

@VladimirAlexiev
Copy link

@steveraysteveray
I'm working with CIM ontologies and want to state the Unit and QuantityKind for some electrical DatatypeProperties (see at end of this description).
Related to Sveino/Inst4CIM-KG#38.

Quantifiable and QuantityValue have 4 restrictions that mention unit and hasUnit:

qudt:QuantityValue
  a owl:Class ;
  rdfs:subClassOf qudt:Concept ;
  rdfs:subClassOf qudt:Quantifiable ;
  rdfs:subClassOf [
      a owl:Restriction ;
      owl:maxCardinality 1 ;
      owl:onProperty qudt:hasUnit ;
    ] ;
  rdfs:subClassOf [
      a owl:Restriction ;
      owl:maxCardinality 1 ;
      owl:onProperty qudt:unit ;
    ] ;
.

But:

  • qudt:unit is deprecated
  • qudt:hasUnit has no domain but is defined as "This property relates a system of units..."

So which one should be used? I don't know the story why qudt:unit was deprecated, but let's honor this:

  • change the definition of qudt:hasUnit to mention Quantifiable and also numeric properties (when the unit is fixed)
  • add a definition to qudt:hasQuantityKind and mention it can be used with .... and numeric properties (when the quantity kind is fixed)
  • remove unit from any and all Restrictions (if it's deprecated then it should not be used)
  • add a restriction to QuantityValue to mention qudt:value (such is present in Quantifiable)
  • add the following in qudt:hasUnit and qudt:hasQuantityKind
skos:scopeNote """Can be used as annotation on a numeric property when that property uses a fixed QuantityKind/Unit.
E.g. in the electrical CIM property example:
- the kind is fixed to an electrical modification of `ComplexPower`
- the unit is fixed to Mega Volt-Amperes
- (the unit and multiplier are also given separately: this is a peculiarity of electrical CIM)
""";
skos:example """
cim:ACDCConverter.baseS a owl:FunctionalProperty , owl:DatatypeProperty ;
  rdfs:domain cim:ACDCConverter ;
  rdfs:range xsd:float ;
  qudt:hasQuantityKind cim:ApparentPower;
  qudt:hasUnit unit:MegaV-A;
  cims:multiplier cim:UnitMultiplier.M;
  cims:unitSymbol cim:UnitSymbol.VA.
""".

Of course, you can cut out the last two lines (and the parenthesized bullet that explains them).
Or if the example is too big/complex/specific, make up some datatype property.

@steveraysteveray
Copy link
Collaborator

Comments received. I think I have good answers for you for some of the items, and your suggestions deserve some thought. I will get to them after finishing some other urgent tasks.

@VladimirAlexiev
Copy link
Author

Please ping me if my skos:example is incorrect or inaccurate.

@steveraysteveray
Copy link
Collaborator

Starting to address your questions:

qudt:unit was deprecated in favor of qudt:hasUnit to be consistent with other relations like qudt:hasQuantityKind. This was brought up by the ASHRAE 223 committee. I agree that we should clean out any uses of qudt:unit from both the OWL and SHACL schemas. I have made a note to do that.

Regarding the domain of hasUnit, you are correct. We combined the uses of qudt:unit and qudt:hasUnit such that the remaining relation qudt:hasUnit is used by a variety of classes, (SystemsOf..., Quantifiable, QuantityValue).

I'm a bit unclear what you mean when you talk about numeric properties. Could you expand or give an example?

qudt:QuantityValue is a rdfs:subClassOf qudt:Quantifiable, so it doesn't need to mention qudt:value.

Your last comment involves what you are calling a numeric property, so when I understand what you mean there, I'll be able to comment on your suggested code.

Hopefully my responses get us at least part of the way to resolving these issues.

@VladimirAlexiev
Copy link
Author

VladimirAlexiev commented Sep 29, 2024

hi @steveraysteveray !
By "numeric property" I mean a datatype property whose value is a number, but it also wants to specify fixed quantityKind and unit so that:

  • we can be explicit about the meaning of the value
  • instance data doesn't need to be burdened with quantityKind and unit information (think billions of data points)

Eg in electrical CIM/CGMES, currently all units are fixed. So we want to use annotations like this:

cim:ACDCConverter.baseS a owl:FunctionalProperty , owl:DatatypeProperty ;
  rdfs:domain cim:ACDCConverter ;
  rdfs:range xsd:float ;  # pure number!
  cims:multiplier cim:UnitMultiplier.M;  # this was present in CIM, but in a different form
  cims:unitSymbol cim:UnitSymbol.VA.  # this was present in CIM, but in a different form
  qudt:hasQuantityKind cim:ApparentPower; # this CIM qk has a link to QUDT
  qudt:hasUnit unit:MegaV-A; # this QUDT unit is mapped from multiplier & unitSymbol

See:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants