Re: The Robber and the Speeder: an exciting inference

On Monday, 17 March 2003 at 17:00, Roger L. Costello wrote:
> Does anyone have ideas on how to enhance my solution to use
> more of OWL's capabilities, and use more inferencing?

Here's my take on it...it's not as exciting as C.H.I.P.S. though...

First of all a robbery takes place. The robber drops his gun while
fleeing. A report is filed by the investigating officers:

<RobberyEvent>
  <date>...</date>
  <description>...</description>
  <evidence>
    <Gun>
      <serial>ABCD</serial>
    </Gun>
  </evidence>
  <robber>
    <Person /> <!-- an unknown person -->
  </robber>
</RobberyEvent>

Subsequently a car is pulled over for speeding. The traffic officer
files a report electronically while issuing a ticket:

<SpeedingOffence>
  <date>...</date>
  <description>...</description>
  <speeder>
    <Person>
      <name>John Doe</name>
      <driversLicenseNumber>ZXYZXY</driversLicenseNumber>
    </Person>
  </speeder>
</SpeedingOffence>

At police HQ, the computer analyses each report as it is filed. The
following OWL rule tells the computer that a driversLicenseNumber is
unique to a Person:

<owl:InverseFunctionalProperty rdf:ID="driversLicenseNumber">
  <rdfs:domain rdf:resource="Person" />
  <rdfs:range  rdf:resource="&rdf;Literal" />
</owl:FunctionalProperty>

The computer uses this information to look up any other records it has
about that person and finds a gun license:

<GunLicense>
  <registeredGun>
    <Gun>
      <serial>ABCD</serial>
    </Gun>
  </registeredGun>
  <holder>
    <Person>
      <name>Fred Bloggs</name>
      <driversLicenseNumber>ZXYZXY</driversLicenseNumber>
    </Person>
  </holder>
</GunLicense>

The next OWL rule tells the computer that the registeredGun property
uniquely identifies a GunLicense. i.e. each gun is associated with
only a single GunLicense

<owl:InverseFunctionalProperty rdf:ID="registeredGun">
  <rdfs:domain rdf:resource="GunLicense" />
  <rdfs:range  rdf:resource="Gun" />
</owl:FunctionalProperty>

The computer now knows that the person stopped for speeding owns a
gun. The next rule tells the computer that each gun is uniquely
identified by its serial.

<owl:InverseFunctionalProperty rdf:ID="serial">
  <rdfs:domain rdf:resource="Gun" />
  <rdfs:range  rdf:resource="&rdf;Literal" />
</owl:FunctionalProperty>

The computer uses this to determine that the gun on the license is the
same gun used in the robbery. This final rule, seals the speeder's
fate. It tells the computer that each GunLicense applies to only one
gun and one person, so there is no doubt that the speeder is the person
who owns the gun:

<owl:Class rdf:ID="GunLicense">
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Restriction>
      <owl:onProperty rdf:resource="#registeredGun"/>
      <owl:cardinality>1</owl:cardinality>
    </owl:Restriction>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#holder"/>
      <owl:cardinality>1</owl:cardinality>
    </owl:Restriction>
  </owl:intersectionOf>
</Class>

The computer reports back to the traffic cop who duly arrests the
speeder on suspicion of armed robbery.


- Ian <iand@internetalchemy.org>
"The test of all knowledge is experiment."

Received on Friday, 21 March 2003 16:22:33 UTC