(previously Copyright David Dodds 2008)
Temporal Accommodation in Ontologies
This episode we see an ontology for people, the Person ontology
developed by Holger at Stanford University (SMI).
I have modified it slightly, I have added objectProperty 'hasPHD' to
it. This is so I can use this person.owl as a carrier to show an
example of the topicmap-graph tool I discussed in posting 381.
back in msg 381 we saw:
"When multiple ontologies for a single domain, such as 3 different
space ontologies are there the required information needed to perform
merging and alignment can be determined, and any required operators in
the topic map, (edge(s)) needed to transform the content between an
ontology point and the topic map node receiver.)
This is useful in the case where there is a not-one-to-one
transformation of material from the ontology to the topic map or using
the topic map as a functional transition device between one ontology
and a receiving (but different) ontology.
The topic map also provides a means of implementing such processes as
temporal accommodation as in the following: An ontology contains an
*:id="John Smith". (I used name=Bob in the current posting.)
'John' has the temporal attribute value of 'student' at any time prior
to 'has-PHD', and any time afterward he has the temporal attribute
value of 'professor'.
He is always a PERSON, both before and after the temporal 'point' or
'event' 'has-PHD'.
Ordinarily, ontologies have difficulty representing temporally defined
values and the topic map provides a means of dealing with situations,
such as time sensitive content, which they ordinarily are challenged
to handle. [ eg 'Engineering a complex ontology with time', Jorge
Santos, Steffen Staab. ]" </quote>
(Could this time sensitive content challenge be because computer-based
ontologies tend to be fashioned after taxonomies which were fashioned
after "ideal" cognitive systems, such as the "ideal circle" or
"perfect circle"? Plato, in his dialogs about the Cave, talks about
the theory of Forms, entities such as circles, being "defined as a
plane figure composed of a series of points, all of which are
equidistant from a given point." No one can draw such a thing, nor is
it likely anyone has ever actually seen such a figure, but we can
compare the imperfect ones we can draw and do see with this ideal and
call them (the former) 'circles'. (the former which, with varying
degrees (of precision or 'perfection'), are imperfect Forms).
Computer-based ontologies seem to be a latter day way of describing
"Forms", such as "ontology of a circle". The Form of a circle (its
definition) does not change or vary with the passage of time, nor
change with humidity or temperature. When ontologies are used to deal
with "real circles", that is to say "things in the physical (real)
world" then these latter things do exhibit variability (in their
presentation, etc); circles there are not perfectly round even with
best efforts. Thus it is necessary to augment the "Form" ontology with
description etc which can bridge the variability between the Form
things as related by the ontologies and the measured or described
things as they seem in the physical or instrumental world. DDTM is one
means of adjunct to Form type ontologies whereby the "imperfect"
[-Form] (such as time varying) can be computationally-satisfactorily
bridged.)
Originally called 'Person.owl' and based upon
xml:base="http://www.owl-ontologies.com/unnamed.owl">, I added some
extra content to it and renamed it 'PersonD.owl', wishing to
simultaneously show the origins / heritage of the OWL file which I
chose as a carrier of or packaging of 'person' type information and
included the d in the changed OWL name to show that I had modified the
original version of 'Person.owl' (basically a simple ontology merge).
Other ontologies of 'person' could be used instead.
Here is the original 'Person.owl' :
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns="http://www.owl-ontologies.com/unnamed.owl#"
xml:base="http://www.owl-ontologies.com/unnamed.owl">
<owl:Ontology rdf:about=""/>
<owl:Class rdf:ID="Person"/>
<owl:Class rdf:ID="Car"/>
<owl:ObjectProperty rdf:ID="drives">
<rdfs:range rdf:resource="#Car"/>
<rdfs:domain rdf:resource="#Person"/>
</owl:ObjectProperty>
<owl:DatatypeProperty rdf:ID="model">
<rdfs:domain rdf:resource="#Car"/>
<rdf:type
rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</owl:DatatypeProperty>
<owl:FunctionalProperty rdf:ID="name">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Person"/>
<rdf:type
rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
</owl:FunctionalProperty>
<Person rdf:ID="Bob">
<drives>
<Car rdf:ID="Honda">
<model rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Honda</model>
</Car>
</drives>
<drives>
<Car rdf:ID="Ford">
<model rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Ford</model>
</Car>
</drives>
<name rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Bob</name>
</Person>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Bob drives a Honda and a Ford.</rdfs:comment>
<Person rdf:ID="Cherie">
<name rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Cherie</name>
</Person>
<Car rdf:ID="Chrysler">
<model rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Chrysler</model>
</Car>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>There is a person named Cherie and a Chrysler (car).</rdfs:comment>
<Person rdf:ID="Alice">
<name rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Alice</name>
<drives rdf:resource="#Chrysler"/>
</Person>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Alice drives a Chrysler.</rdfs:comment>
</rdf:RDF>
<!-- Created with Protege (with OWL Plugin 2.2, Build 331)
http://protege.stanford.edu -->
Here is the text of the material I added :
<owl:Class rdf:ID="Certificate"/>
<owl:ObjectProperty rdf:ID="hasPHD">
<rdfs:comment>
hasPHD is the ID of a property of (object) Person. hasPHD is
basically a stringname whose XML structural location gives meaning
/defines it (via certificate and a kind of getCertificateDate value
and (that) semantic associated element. The context for 'having a Phd'
is Person and the subcontext is certificate and date (received).
'Having a Phd' is colloquial for 'have received a Phd certificate /
document at date yaddayadda', or at least '(yes) have received a Phd
certificate / document'. Notice how this kind of 'has' ('hasPHD') is
semantically different from "hasGreenEyes" and "hasBigFeet".
</rdfs:comment>
<rdfs:range rdf:resource="#Certificate"/>
<rdfs:domain rdf:resource="#Person"/>
</owl:ObjectProperty>
<owl:DatatypeProperty rdf:ID="datereceived">
<rdfs:domain rdf:resource="#Certificate"/>
<rdf:type
rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#date"/>
</owl:DatatypeProperty>
<owl:FunctionalProperty rdf:ID="daterec">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#date"/>
<rdfs:domain rdf:resource="#date"/>
<rdf:type
rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
</owl:FunctionalProperty>
Following is Persond.owl, the merged OWL file :
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns="http://www.owl-ontologies.com/unnamed.owl#"
xml:base="http://www.owl-ontologies.com/unnamed.owl">
<owl:Ontology rdf:about=""/>
<owl:Class rdf:ID="Person"/>
<owl:Class rdf:ID="Car"/>
<owl:Class rdf:ID="Certificate"/>
<owl:ObjectProperty rdf:ID="drives">
<rdfs:range rdf:resource="#Car"/>
<rdfs:domain rdf:resource="#Person"/>
</owl:ObjectProperty>
<owl:DatatypeProperty rdf:ID="model">
<rdfs:domain rdf:resource="#Car"/>
<rdf:type
rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
</owl:DatatypeProperty>
<owl:FunctionalProperty rdf:ID="name">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Person"/>
<rdf:type
rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
</owl:FunctionalProperty>
<owl:ObjectProperty rdf:ID="hasPHD">
<rdfs:comment>
hasPHD is the ID of a property of (object) Person. hasPHD is
basically a stringname whose XML structural location gives meaning
/defines it (via certificate and a kind of getCertificateDate value
and (that) semantic associated element. The context for having a Phd
is Person and the subcontext is certificate and date (received).
'Having a Phd' is colloquial for 'have received a Phd certificate /
document at date yaddayadda', or at least '(yes) have received a Phd
certificate / document'. Notice how this kind of 'has' ('hasPHD') is
semantically different from "hasGreenEyes" and "hasBigFeet".
</rdfs:comment>
<rdfs:range rdf:resource="#Certificate"/>
<rdfs:domain rdf:resource="#Person"/>
</owl:ObjectProperty>
<owl:DatatypeProperty rdf:ID="datereceived">
<rdfs:domain rdf:resource="#Certificate"/>
<rdf:type
rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#date"/>
</owl:DatatypeProperty>
<owl:FunctionalProperty rdf:ID="daterec">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#date"/>
<rdfs:domain rdf:resource="#date"/>
<rdf:type
rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
</owl:FunctionalProperty>
<Person rdf:ID="Bob">
<drives>
<Car rdf:ID="Honda">
<model rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Honda</model>
</Car>
</drives>
<drives>
<Car rdf:ID="Ford">
<model rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Ford</model>
</Car>
</drives>
<hasPHD>
<Certificate rdf:ID="PhysicsPhd">
<datereceived rdf:datatype="http://www.w3.org/2001/XMLSchema#date"
>April 1 2007</datereceived>
</Certificate>
</hasPHD>
<name rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Bob</name>
</Person>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Bob drives a Honda and a Ford.</rdfs:comment>
<Person rdf:ID="Cherie">
<name rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Cherie</name>
</Person>
<Car rdf:ID="Chrysler">
<model rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Chrysler</model>
</Car>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>There is a person named Cherie and a Chrysler (car).</rdfs:comment>
<Person rdf:ID="Alice">
<name rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Alice</name>
<drives rdf:resource="#Chrysler"/>
</Person>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>Alice drives a Chrysler.</rdfs:comment>
</rdf:RDF>
<!-- Original Created with Protege (with OWL Plugin 2.2, Build 331)
http://protege.stanford.edu -->
PHP Reflection could be used to examine PHP Objects created as a
result of XML scanning / parsing the Person OWL XML structure. The
results of the reflection, the 'semantic' items found in the OWL
dataset (like person, name, propertynames etc) could be compared with
a depiction of what items were needed / 'sought' in order to both form
a context and to perform some logic. In the current case the logic is
"is Person name=? a status=student or a status=professor ?" and the
answer is decided upon whether or not 'Person name=? has
hasPhdstatus=yes or PhdreceivedDate <= now'.
In the next episode (I mean posting) we are shown how David's topic
map graph system (DDTM) is used to perform Temporal Accommodation in
Ontologies. Part of the answer is that DDTM explicitly associates the
needed references (the various XML IDs), which the logic needed to
perform discovering some (implied!) knowledge, requires. {Such as
discovering whether Bob is a student or a professor. Its not stated
explicitly in the ontology, so it is implied and must be discovered
via external-to-the-ontology inferencing 'logic'. ..which DDTM
structures.} It is part of explicating multiple ontology merges.
David's topic map graph system, an example node :
<?xml version="1.0" standalone="yes" ?>
<!-- previously Copyright 2008 David Dodds All Rights Reserved code
copyright
owner -->
<sqwirls xmlns = 'http://www.open-meta.com/sqwirls'>
<sqwirl node="1" /> <!-- node number in the graph structure -->
<!-- David Dodds multiple fanin fanout graph connected node with
property-lists-->
<fanio>
<fanin pgms="foo" in="a" from="input1" />
<fanin pgms="majestic12" in="b" from="input2" />
<fanin pgms="bar" comt="comment" in="c" from="input3" />
<fanin in="d" from="input4" />
<fanin in="e" from="input5" />
<fanout out="f" from="output1" />
<fanout pgms="seq25" out="g" from="output2" />
<fanout out="h" from="output3" />
<fanout out="i" from="output4" />
<fanout out="j" from="output5" />
</fanio>
<bagg> <!-- property-lists -->
<majic partone="majestic" parttwo="12" />
<majic partone="majestic2" parttwo="122" />
</bagg>
</sqwirls>
The use / purpose of all of the components in the DDTM is explained in
the next posting. Examples of use of this graph / network based system
are provided in the next posting.
(Note that sometimes this Yahoo posting group software really trashes
the spacing of submitted material esp code.)
-30-