[
Lists Home |
Date Index |
Thread Index
]
Dare Obasanjo wrote:
>
>A requirements document doesn't mean anything.
>
You asserted that
Semantic Web proponents tend to gloss over these points whenever
describing the Semantic Web utopia.
The requirements document is evidence that these important points have
at least been considered and that this consideration has gone into the
design of OWL.
>Show me how the spec
>achieves this. Show me how if I have a data model where a person is
>identified by [SocialSecurityNumber, FullName] and you have a data model
>where a person is a pair of [FirstName, LastName, DateOfBirth] we can
>interoperate.
>
This is just like a relational join using foreign keys, the real
difference between this and a relational table is that there need not be
a fixed number of columns in each record. that's it. Oh and the other
thing is that you might only have partial information about an ontology
in the first place (that is a class definition can be spread out all
over the place) -- the more information you have, the more inferences
you can make.
How about my example using credit cards and tax reports -- assume for
the sake of my not being inclined to type too much stuff out that a
credit card number, a social security number and an email address are
all unique to an individual:
<owl:InverseFunctionalProperty rdf:ID="CCNumber" />
<owl:InverseFunctionalProperty rdf:ID="SSN" />
<owl:InverseFunctionalProperty rdf:ID="email-address" />
<owl:Class rdf:ID="FirstName"><rdfs:subClassOf rdf:resource="#Given"
/></owl:Class>
Now lets define a person, first for the credit card company:
<cc:Person rdf:ID="X123">
<cc:CCNumber>1234567890</cc:CCNumber>
<ss:SSN>111223344</ss:SSN>
<cc:billingAddress> ... </cc:billingAddress>
<cc:spendingLimit>2000</cc:spendingLimit>
</cc:Person>
Now a few transactions:
<cc:Txn>
<cc:CCNumber>1234567890</cc:CCNumber>
<cc:amount>123.45</cc:amount>
<cc:date>20040401</cc:date>
</cc:Txn>
<cc:Txn>
<cc:CCNumber>1234567890</cc:CCNumber>
<cc:amount>512.00</cc:amount>
<cc:date>20040402</cc:date>
</cc:Txn>
<cc:Txn>
<cc:CCNumber>1234567890</cc:CCNumber>
<cc:amount>1000000</cc:amount>
<cc:date>20040403</cc:date>
</cc:Txn>
Now a person in terms of a tax return:
<ss:Person rdf:ID="A123">
<ss:SSN>111223344</ss:SSN>
<ss:annualIncome>1000000</ss:annualIncome>
<person.name rdf:parseType="Collection">
<Given>John</Given>
<Given>Q</Given>
<Family>Public</Family>
</person.name>
<address>...</address>
</ss:Person>
Now an OWL inferencing engine will spit this out:
<#X123> owl:sameAs <#A123>
and hence when you "ask" the system:
"How much money are you aware that A123 spent in April, 2004?"
it could answer: 1000635.45
or "What is the FirstName of X123?" it could answer:
"John"
You could pose these 'questions' as RDQL queries
[http://www.w3.org/Submission/2004/SUBM-RDQL-20040109/] e.g.
SELECT ?amount
WHERE (<#A123> cc:CCNumber ?ccn)
(?txn cc:CCNumber ?ccn)
(?txn cc:amount ?amount)
SELECT ?firstname
WHERE (<#X123> ss:person.name ?name)
(?name rdf:first ?firstname)
In this case <#A123> and <#X123> identify the _same_ object based on the
OWL inference and consequently the 'join' is not explicit, rather
implicit to the ontologies being defined (one can also provide explicit
owl:sameAs, owl:equivalentClass, owl:equivalentProperty statements)
Jonathan
|