- From: Roger L. Costello <costello@mitre.org>
- Date: Sat, 05 Jul 2003 14:20:43 -0400
- To: www-rdf-interest@w3.org
- CC: "Thomas B. Passin" <tpassin@comcast.net>, "Costello,Roger L." <costello@mitre.org>, jon@spin.ie
Excellent Tom! This provides much needed structure to
what we have been doing.
I have several comments:
-----------------------------------------------------------------
> M8) The type of the value of a length is a LinearPhysicalQuantity
> M10a) The type of the value of a length property is a LinearMeasurement.
Don't these contradict each other?
-----------------------------------------------------------------
> M1) A TangibleObject may have zero or more PhysicalProperties.
Don't you mean "... zero or more physicalProperties"?
-----------------------------------------------------------------
> M12) A (numerical value, units specification) pair is a kind of
> MeasurementValue.
Don't you mean "... is a kind of Measurement"?
-----------------------------------------------------------------
> T-M1-3. The domain of PhysicalProperty is TangibleObject.
Don't you mean "The domain of physicalProperty is ..."?
-----------------------------------------------------------------
> Roger, are you going to start up a Wiki for this?
I have never set one up. I know my company wouldn't allow it for
security reasons. I am not sure that my ISP allows it. Anyone know if
ISP's generally allow such things?
-----------------------------------------------------------------
I suspect that your idea of keeping the conceptual model independent of
RDF is a good one. However, I soon got lost when reading all the
conceptual model statements, and found myself jotting them down in
XML-type notation. Below are my scribbles (along with several
questions). Perhaps others with find them of benefit.
-----------------------------------------------------------------
Conceptual Model Framework
<TangibleObject>
<physicalProperty>
<PhysicalQuantity>
<measurement>
<Measurement>
<numericalValue>
<unitSpecification>
-----------------------------------------------------------------
Conceptual Model Applied to a TangibleObject which has a length:
<TangibleObject>
<length>
<LinearPhysicalQuantity>
<measurement>
<Measurement>
<numericalValue>
<unitSpecification>
-----------------------------------------------------------------
Conceptual Model Property Hierarchies:
physicalProperty
|
|
linearPhysicalProperty
|
|
length
Question: How would "area" fit into this property hierarchy?
-----------------------------------------------------------------
Conceptual Model Class Hierarchies:
PhysicalQuantity
|
|
LinearPhysicalQuantity
Question: Would it be useful to say that Length is a type of
LinearPhysicalQuantity?
Measurement
|
|
LinearMeasurement
-----------------------------------------------------------------
Concrete Example that Conforms to the Conceptual Model:
<River rdf:ID="Yangtze">
<length>
<LinearPhysicalQuantity>
<measurement>
<Measurement>
<numericalValue>6300</numericalValue>
<unitSpecification rdf:resource="#LengthInKilometers"/>
</Measurement>
</measurement>
</LinearPhysicalQuantity>
</length>
</River>
Question: do you agree that this example faithfully conforms to the
conceptual model?
Again, great stuff Tom! /Roger
"Thomas B. Passin" wrote:
>
> [Roger L. Costello]
> >
> > The discussions have been excellent. I believe that we are making good
> > progress.
> >
>
> We are, but I think it is time for a change in how to proceed - I have
> several suggestions.
>
> It struck me this morning that this process is very much like the Pair
> Programming of Extreme Programming. One person writes code (==>RDF) and the
> others look on, making suggestions and pointing out errors. Then another
> person takes up the code-writing role.
>
> But some of the other key practices from Extreme Programming are missing. I
> think that they should be in play here.
>
> 1) Write unit tests before writing code.
> 2) Test constantly by applying the unit tests.
> 3) Refactor diligently.
> 4) Be as simple as possible.
>
> The unit tests are based on the known requirements for a module plus what is
> learned during development. Tests are added but not normally retired.
>
> When all unit tests pass and no one can think of any other applicable tests,
> you are done (until I & T, etc, which I take it we are not tackling here).
>
> The input requirements in this case would be based on a conceptual model of
> some kind, together with the kind of statements we think we will want to
> make. As for the tests, we know that we want to be able to make statements
> and draw inferences. So the tests must be in the form of statements. They
> cannot be in RDF because we do not yet know what the RDF will be. Therefore
> they need to be in some other language. In practice, I am sure we want to
> use natural language.
>
> We already know that we are talking about _kinds_ of statements, but we
> will have to test them with specific instance statements. We also know that
> there are a potentially infinite number of statements we would eventually
> like to be able to make. We cannot test them all, so we will have to be
> smart about crafting our tests. Of course we will learn and add tests as we
> go.
>
> Below I take first cut at this plan. But before that, here comes my other
> suggestion. I think that this bit of development should get moved off the
> list to a (publicly accessible) Wiki or Blog site. If a blog, it should
> accept comments to each story, and display them in line. As an Wiki
> example, you could look at Sam Ruby's Wiki for the Echo project. It looks
> like it uses the Moin-Moin Wiki engine, which is in Python and is very easy
> to set up [ http://moin.sourceforge.net/ ]. There are many others.
>
> Whether Wiki or blog, it would be useful to have an RSS feed for changes.
>
> Now for the start of a conceptual model and a few unit tests. I hope that
> the names I use are sufficiently clear, but if they are not, we need to
> improve them or to clarify their intent. I begin property names with
> lowercase, object names with upper case, as Roger has been doing.
>
> M1) A TangibleObject may have zero or more PhysicalProperties.
> Note - Probably needs a different name for TangibleObject.
>
> M2) A physicalProperty is a kind of Property.
>
> M3) The type of the value of a physicalProperty is a PhysicalQuantity.
>
> M4) A linearPhysicalProperty is a kind of physicalProperty.
>
> M5) A length is a kind of linearPhysicalProperty.
>
> M6) A PhysicalQuantity may be characterized by zero or more measurement
> properties.
>
> M7) A LinearPhysicalQuantity is a kind of PhysicalQuantity.
>
> M8) The type of the value of a length is a LinearPhysicalQuantity
> M8a). A LinearPhysicalProperty may have one or more length properties.
>
> M9) The type of the value of a measurement is a Measurement.
>
> M10) A LinearMeasurement is a kind of Measurement.
>
> M10a) The type of the value of a length property is a LinearMeasurement.
>
> M11) A LinearMeasurement is characterized by one or more equivalent
> (numerical value, units specification) pairs.
> Note - This refers to the values in different units, not to the results
> of different measurements taken at different times or by different methods.
>
> M12) A (numerical value, units specification) pair is a kind of
> MeasurementValue.
> Note - I do not try to model a "units specification here". That looks
> like a substantial job in itself!
>
> M13) A MeasurementValue may be associated with metadata that include -
> a) Accuracy
> b) Precision
> c) Data set
> d) Calculations
> e) Algorithms used for the calculation.
> f) Relevant publications
> g) Source
> h) Reported precision (i.e., number of decimal places in the stated
> value,
> which may be different from the precision of the measurement)
>
> M14) There is at least one method for establishing the equivalence between
> each (numerical value, unit specification) pair of interest.
>
> I will stop here and give an example of a few unit tests for bits of this
> model.
>
> - M1) A TangibleObject may have zero or more PhysicalProperties.
> T-M1-1. There is a type of Thing called TangibleObject.
> T-M1-2. There is a type of Property called Physical Property.
> T-M1-3. The domain of PhysicalProperty is TangibleObject.
> T-M1-4. A TangibleObject may have zero or more PhysicalProperties.
>
> To perform these four unit tests, write an RDF or OWL statement for each of
> them. This will be easy - so far so good.
>
> M12) A (numerical value, units specification) pair is a kind of
> MeasurementValue.
> - T-M12-1. There is a kind of thing called MeasurementValue.
> - T-M12-2. A MeasurementValue must have exactly one numerical value.
> - T-M12-3. A Measurement Value must have exactly one units
> specification.
> Note - this is not quite right, because a general MeasurementValue could be
> more general than a simple (value, units) pair. We need a name for the
> pair - then the test can be fixed.
>
> We want other unit tests as well. Each of Roger's challenges can be seen as
> a unit test. We might even have a test that requires a specific inference
> to be found.
>
> - T-Roger-1. The Yangtze River has a length of 3609 miles.
> The unit test consists of
> a) Translating the sentence into the language of the model.
> b) Translating that into RDF/OWL statements.
> Probably, step (a) should really be included in the statement of the unit
> test, leaving only step b) to be actually tested.
>
> - T-Roger-2. The Yangtze River has a length of 6300 kilometers.
> - T-Roger-3. The statements in T-Roger-1 and T-Roger-2 are equivalent.
> -Note - This would seem to be impossible to pass since we have not
> modeled what this kind of "equivalence" means as yet. But maybe we can
> finesse it by using a symmetric "equivalentPhysicalValues" property, which
> we could define elsewhere. The notion of "transformation" would get
> refactored into this new property.
>
> If this seems like a good idea, we should add it to the conceptual model.
>
> It looks to me like M14 and the units specification are the only tricky
> parts of this.
>
> Guys, this has got to be a good approach, because my ideas changed,
> clarified, and improved as I wrote this post!
>
> Just to sum up, I am suggesting this -
>
> Create a conceptual model and a set of typical
> or edge case statements, then write unit tests for
> each bit of the model and for each of the statements,
> then try to write RDF/OWL for each test.
>
> Roger, are you going to start up a Wiki for this?
>
> Cheers,
>
> Tom P
Received on Saturday, 5 July 2003 14:23:08 UTC