* Kashyap, Vipul      A8MM <vipul.kash...@cigna.com> [2010-09-09 14:22-0400]
> 
> My 2 cents for whatever it's worth... 
> 
> > per CPR, as a pair of value and datatype:
> > 
> > ... [ trans:systolic [ muo:measuredIn trans1:mmHg ; 
> > muo:numericalValue "120" ] ;
> >     trans:diastolic [ muo:measuredIn trans1:mmHg ; 
> > muo:numericalValue "80" ] ] .
> 
> 
> This is probably the best option as this allows you to switch units and 
> encapsulate unit transformations into specific functions.
> 
> > Another, potentially more attractive option, is to model units in the
> > predicate:
> > 
> > :X trans:bloodPressure
> >   [ trans:systolicMmHg "120" ;
> >     trans:diastolicMmHg "80" ] .
> 
> Switching units would be a challenge and require writing predicate rules?

If we had trans:systolicMmHg and trans:systolicMPa and ..., yes, but
that's what I'm trying to avoid. If we have a KB filled with
trans:systolicMmHg, we will have an easier time making it available in
e.g. MPa than if we had to adapt a variety of units. That is, we would
have a simple rule body rather than the SPARQL UNION expressed below.


> > This greatly simplifies our life as we are otherwise likely 
> > to have a variety of e.g. BP data in the database: 120/80 
> > mmHg, 12/8 DmHg, 16000/10667 Pa,
> > 16/11 MPa, 13 (PAM)
> > 
> > which would lead to rediculous queries when we want to use the data:
> > 
> > SELET ?sysM ?diaM {
> >           ?x trans:bloodPressure [ trans:systolic ?sys ; 
> > trans:diastolic ]
> >           FILTER (datatype(?sys) = u:mmHg) && datatype(?dia) 
> > = u:mmHg) }
> >   UNION SELECT (?sys*10 as ?sysM) (?dia*10 as ?diaM) {
> >           ?x trans:bloodPressure [ trans:systolic ?sys ; 
> > trans:diastolic ]
> >           FILTER (datatype(?sys) = u:dmHg) && datatype(?dia) 
> > = u:dmHg) }
> >   UNION SELECT (?sys*133 as ?sysM) (?dia*133 as ?diaM) {
> >           ?x trans:bloodPressure [ trans:systolic ?sys ; 
> > trans:diastolic ]
> >           FILTER (datatype(?sys) = u:MPa) && datatype(?dia) = 
> > u:MPA) } ... }
> 
> One approach to address this would be to adopt a canonical set of units and 
> apply transformations in and out of various data sources.

Once we pick canonical units, wouldn't we want to use units-specific
predicates? If we don't we run the risk that folks will not know that
our data structures are canonicalized and will inject data in other
units. In a sense, such predicates would fail to carry the information
that it is the one-true-units-for-BP. The predicates don't specifically
need to carry the units in the name,
  trans:systolicMmHg vs. trans:canonSystolic vs. trans:systolic
but I think that's a good way to eliminate some likely bugs.


> ---Vipul
> ------------------------------------------------------------------------------
> CONFIDENTIALITY NOTICE: If you have received this email in error, please 
> immediately notify the sender by e-mail at the address shown.  This email 
> transmission may contain confidential information.  This information is 
> intended only for the use of the individual(s) or entity to whom it is 
> intended even if addressed incorrectly.  Please delete it from your files if 
> you are not the intended recipient.  Thank you for your compliance.  
> Copyright 2010 CIGNA
> ==============================================================================
> 

-- 
-ericP

Reply via email to