@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

@prefix owl: <http://www.w3.org/2002/07/owl#> .

@prefix : <#> .

@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

@prefix foaf: <http://xmlns.com/foaf/0.1> .

@prefix u: <http://niem.gov/niem/universal/0.1>.

@prefix s: <http://niem.gov/niem/structures/0.1>.

@prefix c: <http://niem.gov/niem/common/0.1>.

@prefix j: <http://www.niem.gov/niem/domains/justice/0.1>.

@prefix emer: <http://www.niem.gov/niem/domains/emergency-management/0.1>.

@prefix int: <http://www.niem.gov/niem/domains/intelligence/0.1>.

@prefix air: <http://www.megginson.com/exp/ns/airports#>.

:Person a rdfs:Class.

:Official a rdfs:Class; rdfs:subClassOf :Person.

:Suspect a rdfs:Class; rdfs:subClassOf :Person.

:PersonName a rdfs:Class.

xsd:Date a rdfs:Class.

:Location a rdfs:Class.

:Organization a rdfs:Class.

:Employment a rdfs:Class.

:EmploymentPosition a rdfs:Class.

:name a rdf:Property; rdfs:domain :Person; rdfs:range :PersonName.

:birthDate a rdf:Property; rdfs:domain :Person; rdfs:range :PersonName.

:homeAddress a rdf:Property; rdfs:domain :Person; rdfs:range :Location.

:work a rdf:Property; rdfs:domain :Person; rdfs:range :Organization.

:position a rdf:Property; rdfs:domain :Employment; rdfs:range :Employment.

:employer a rdf:Property; rdfs:domain :Employment; rdfs:range :Organization.

:address a rdfProperty; rdfs:domain :Employment; rdfs:range :Location.

u:personGivenName a rdf:Property; rdfs:domain :PersonName; rdfs:range :Literal.

u:personMiddleName a rdf:Property; rdfs:domain :PersonName; rdfs:range :Literal.

u:personSurName a rdf:Property; rdfs:domain :PersonName; rdfs:range :Literal.

u:locationAddress a rdf:Property; rdfs:domain :Location; rdfs:range :Literal.

u:locationCityName a rdf:Property; rdfs:domain :Location; rdfs:range :Literal.

u:locationStateName a rdf:Property; rdfs:domain :Location; rdfs:range :Literal.

u:locationPostalCodeID a rdf:Property; rdfs:domain :Location; rdfs:range :Literal.

:organizationName a rdf:Property; rdfs:domain :Organization; rdfs:range :Literal.

:Address a rdf:Property; rdfs:domain :Organization; rdfs:range :Location.

:Database a rdfs:Class.

:owner a rdf:Property; rdfs:domain :Database; rdfs:range :Organization.

:DataRecord a rdfs:Class.

:PassengerNameRecord a rdfs:Class; rdfs:subClassOf :DataRecord.

:source a rdf:Property; rdfs:domain :DataRecord; rdfs:range :Database.

:date a rdf:Property; rdfs:domain :DataRecord; rdfs:range xsd:Date.

:passenger a rdf:Property; rdfs:domain :PassengerNameRecord; rdfs:range :Person.

:flight a rdf:Property; rdfs:domain : PassengerNameRecord; rdfs:range :Flight.

:Flight a rdfs:Class.

:date a rdf:Property; rdfs:domain :Flight; rdfs:range xsd:Date.

:number a rdf:Property; rdfs:domain :Flight; rdfs:range :Literal.

:origin a rdf:Property; rdfs:domain :Flight; rdfs:range air:Iata.

:destination a rdf:Property; rdfs:domain :Flight; rdfs:range air:Iata.

:Event a rdfs:Class.

:Search a rdfs:Class; rdfs:subClassOf :Event.

:Transfer a rdfs:Class; rdfs:subClassOf :Event.

:Assignment a rdfs:Class; rdfs:subClassOf :Event.

:CaseOpening a rdfs:Class; rdfs:subClassOf :Event.

:WarrantIssue a rdfs:Class; rdfs:subClassOf :Event.

:date a rdf:Property; rdfs:domain :Event; rdfs:range xsd:Date.

:name a rdf:Property; rdfs:domain :Event; rdfs:range :Literal.

:Search a rdfs:Class.

:SearchQuery a rdfs:Class.

:SearchResult a rdfs:Class.

:File a rdfs:Class.

:query a rdf:Property; rdfs:domain :Search; rdfs:range :SearchQuery.

:result a rdf:Property; rdfs:domain :Search; rdfs:range :SearchResult.

:aboutPerson a rdf:Property; rdfs:domain :SearchQuery; rdfs:range xsd:DateTime.

:aboutPerson a rdf:Property; rdfs:domain :SearchResult; rdfs:range xsd:DateTime.

:dateTime a rdf:Property; rdfs:domain :SearchResult; rdfs:range xsd:DateTime.

:source a rdf:Property; rdfs:domain :SearchResult; rdfs:range :Database.

:document a rdf:Property; rdfs:domain :SearchResult; rdfs:range :File.

:Transfer a rdfs:Class.

:sender a rdf:Property; rdfs:domain :Transfer; rdfs:range :Official; rdfs:range :Organization.

:recipient a rdf:Property; rdfs:domain :Transfer; rdfs:range :Official; rdfs:range :Organization.

:subject a rdf:Property; rdfs:domain :Transfer; rdfs:range :Person.

:content a rdf:Property; rdfs:domain :Transfer; rdfs:range :Literal.

:Assignment a rdfs:Class.

:sender a rdf:Property; rdfs:domain :Assignment; rdfs:range :Official; rdfs:range :Organization.

:recipient a rdf:Property; rdfs:domain :Assignment; rdfs:range :Official; rdfs:range :Organization.

:subject a rdf:Property; rdfs:domain :Assignment; rdfs:range :Event.

:content a rdf:Property; rdfs:domain :Assignment; rdfs:range :Literal.

:CaseOpening a rdfs:Class.

:Case a rdfs:Class.

:justification a rdf:Property; rdfs:domain :CaseOpening; rdfs:range :Event.

:opens a rdf:Property; rdfs:domain :CaseOpening; rdfs:range :Case.

:isOpenedBy a rdf:Property; rdfs:domain :Case; rdfs:range :CaseOpening.

c:caseTrackingID a rdf:Property; rdfs:domain :Case; rdfs:range :Literal.

c:caseCategory a rdf:Property; rdfs:domain :Case; rdfs:range c:CaseCategoryText.

# a cleaner alternative would be to define subclasses for the different case categories, but the case category text seems to be needed elsewhere

:agent a rdf:Property; rdfs:domain :Case; rdfs:range :Official.

# needs to be able to reference multiple people who open, close, and work on the case

:isClosedBy a rdf:Property; rdfs:domain :Case; rdfs:range :CaseOpening.

c:caseTrackingID a rdf:Property; rdfs:domain :Case; rdfs:range :Literal.

c:caseCategory a rdf:Property; rdfs:domain :Case; rdfs:range c:CaseCategoryText.

:WarrantIssue a rdfs:Class.

j:Arrest a rdfs:Class.

:subject a rdf:Property; rdfs:domain :WarrantIssue; rdfs:range :.

# Don’t what this is. In the example, there is a reference to "warrant-2" that doesn’t appear anywhere else.

# Maybe it is a Literal.

j:initiatingAttorney a rdf:Property; rdfs:domain :WarrantIssue; rdfs:range :Official.

j:judge a rdf:Property; rdfs:domain :WarrantIssue; rdfs:range : Official.

j:arrestWarrant a rdf:Property; rdfs:domain :WarrantIssue; rdfs:domain j:Arrest; rdfs:range f:ArrestWarrant.

:date a rdf:Property; rdfs:domain j:Arrest; rdfs:range xsd:Date.

j:arrestOfficial a rdf:Property; rdfs:domain j:Arrest; rdfs:range :Official.

j:arrestSubject a rdf:Property; rdfs:domain j:Arrest; rdfs:range :Suspect.

j:arrestLocation a rdf:Property; rdfs:domain j:Arrest; rdfs:range :Loaction.

j:arrestCharge a rdf:Property; rdfs:domain j:Arrest; rdfs:range j:ArrestCharge.

j:arrestSubjectRightsReadIndicator a rdf:Property; rdfs:domain j:Arrest; rdfs:range xsd:Boolean.

j:ArrestWarrant a rdfs:Class.

c:caseCategory a rdf:Property; rdfs:domain :ArrestWarrant; rdfs:range c:CaseCategoryText.

date: a rdf:Property; rdfs:domain :ArrestWarrant; rdfs:range xsd:Date.

j:caseCourt a rdf:Property; rdfs:domain :ArrestWarrant; rdfs:range :Court.

j:arrestSubject a rdf:Property; rdfs:domain :ArrestWarrant; rdfs:range :Suspect.

j:data a rdf:Property; rdfs:domain :ArrestWarrant; rdfs:range :ArrestData

# I have encapsulated in ArrestData a number of data relevant to the particular case, they might change from one case category to another

# Persons

:JohnDoe a :Suspect;

:name

[u:personGivenName "John";

u:personMiddleName "Henry";

u:personSurName "Doe"];

:birthDate 1975-08-24;

:homeAddress

[:locationAddress "123 Main Street";

:locationCityName "New York";

:locationStateName "NY";

:locationPostalCodeID "10044"]

.

:AliceDoe a :Suspect;

:name

[u:personGivenName "Alice";

u:personMiddleName "Liddell";

u:personSurName "Doe"];

:homeAddress

[:locationAddress "325 Beacon Street";

:locationCityName "Boston";

:locationStateName "MA";

:locationPostalCodeID "02111"]

.

:RobinsonDuckworth a :Official;

:name

[u:personGivenName "Robinson";

u:personMiddleName "";

u:personSurName "Duckworth"];

:work

[:position :CriminalInvestigator;

:employer :TSA-DC]

.

:CharlesDodgson a :Official;

:name

[u:personGivenName "Charles";

u:personMiddleName "Lutwidge";

u:personSurName "Dodgson"];

:work

[:position :SpecialAgent;

:employer :FBI-NYC],

[:position :AssistantUSAttorney;

:employer :USAO-NY]

.

: AnnaLiszt a :Official;

:name

[u:personGivenName "Anna";

u:personMiddleName "";

u:personSurName "Liszt"];

:work

[:position :IntelligenceAnalyst;

:employer :FBI-NYC]

.

: MattDillon a :Official;

:name

[u:personGivenName "Matthew";

u:personMiddleName "";

u:personSurName "Dillon"];

:work

[:position :DeputyMarshal;

:employer :marshalls-NY]

.

# Not declared in original example, but used.

: JosephCrater a :Official;

:name

[u:personGivenName "Joseph";

u:personMiddleName "F.";

u:personSurName "Crater"];

:work

[:position :Judge;

:employer :NYCFC]

.

# Organizations

:FBI-NYC a :Organization;

:organizationName "FBI";

:address

[:locationCityName "New York";

:locationStateName "NY"]

.

:TSA-DC a :Organization;

:organizationName "TSA";

:address

[:locationCityName "Washington";

:locationStateName "DC"]

.

:JTTF-NY a :Organization;

:organizationName

"Joint Terrorism Task Force";

:address

[:locationCityName "New York";

:locationStateName "NY"]

.

:Marshals-NY a :Organization;

:organizationName

"US Marshals";

:address

[:locationCityName "New York";

:locationStateName "NY"]

.

:USAO-NY a :Organization;

:organizationName

"United States Attorney's Office";

:address

[:locationCityName "New York";

:locationStateName "NY"]

.

# Not declared in original example, but used

:NYCFC a :Organization;

:organizationName

"New York City Family Court"

.

# Not declared in original example, but used

:MCC a :Organization;

:organizationName

"Metropolitan Correctional Center"

.

# Databases

:TSDB a :Database.

:lexis a :Database;

:owner

[:organizationName "LexisNexis"]

.

:AA-PNR a :Database

:owner

[:organizationName "American Airlines"]

.

This transaction log is # Data record
from the Transportation Security Administration
which is part of the Department of Homeland Security
which is part of the Executive Branch
which is part of the US Government
TSA receives
PNR data :pnr-1 a :PassengerNameRecord;
from American Airlines :source :AA-PNR;
About John Henry Doe :passenger

[:name

[:personGivenName "John",

:personMiddleName "Henry",

:personSurName "Doe"];

DOB: 8/24/75 :birthDate 1975-08-24];
Who traveled on flight :flight
no. 723 [:number "723",
from New York (LaGuardia) :origin :LGA,
to Chicago (O'Hare) :destination :ORD,
on 6/14/04 :date 2004-06-14]
This data is automatically
matched against other data :flight-test-search-1 a :Search;
from three sources
:date 2005-09-12;

:name "Secure Flight Test";

the matching ("search") query is looking for :query
a person named John Henry Doe [:aboutPerson

[:name

[:personGivenName "John",

:personMiddleName "Henry",

:personSurName "Doe"];

with a DOB of 8/24/75 :birthDate 1975-08-24]];
:result

The result of the first match

[:datetime 2005-09-12T12:00:01;
which was from the Terrorist Screening Database

:source :TSDB;

was the finding of a person named John Henry Doe :aboutPerson

[:name

[:personGivenName "John",

:personMiddleName "Henry",

:personSurName "Doe"]]

no DOB information is included ],
The result of the second match
[:datetime 2005-09-12T12:00:12;
which was from the LexisNexis database

:source :lexis;

was the finding of a person named John Henry Doe :aboutPerson

[:name

[:personGivenName "John",

:personMiddleName "Henry",

:personSurName "Doe"];

who is associated with the address 123 Main , New York, NY 10044 :homeAddress

[:locationAddress "123 Main Street";

:locationCityName "New York";

:locationStateName "NY";

:locationPostalCodeID "10044"];

with a DOB of 8/24/75 :birthDate 1975-08-24;

],

The result of the third match
[:datetime 2005-09-12T12:00:15;
which was from the LexisNexis database :source :lexis;
was the finding of a person named John Henry Doe :aboutPerson

[:name

[:personGivenName "John",

:personMiddleName "Henry",

:personSurName "Doe"];

who is associated with the address 723 High Street, Seattle, WA 98104 :homeAddress

[:locationAddress "723 High Street";

:locationCityName "Seattle";

:locationStateName "WA";

:locationPostalCodeID "98104"];

with a DOB of 8/24/75. :birthDate 1975-08-24;

].

Because there is a match,
the system displays the information to
Robinson Duckworth
a Criminal Investigator
employed by TSA in Washington, DC
The data is sent # <!-- TSA Sends Match to FBI -->

# Subject in the example refers to a Person(-id). I have simplified (generalized) this to mean any string, as in the subject of a mail message.

# This is possibly not correct.

:transfer-1 a :Transfer;

:name "0876553";

:subject :JohnDoe;

on 9/17/05 :date 2005-09-17;
by Duckworth :sender :RobinsonDuckworth;
to Charles Lutwidge Dodson :recipient :CharlesDodgson;
a Special Agent
employed by the FBI in New York
because

:content

"Secure flight match. Possible terror suspect"

.

matching a name from a PNR with a name from TSDB
without any other information
is sufficient evidence
that the person may be associated with terrorism
and
matching a name and DOB from a PNR with a commercial database
is sufficient evidence
that the data may be about the same person
Data about
John Henry Doe
is received by
Charles Lutwidge Dodson
from
Robinson Duckworth
#<!-- FBI opens an investigation --> (3)

# it would be nice to have "an" as a synonym of "a".

:open-investigation-1 a :OpeningCase;

:justification :transfer-1;

:opens investigation-1

.

:investigation-1 a :Case;

c:caseTrackingID "555NY5678";

c:caseCategory :intelligence;

xsd:date 2005-09-18;

Dodgson :agent :CharlesDodgson;

:agency :FBI-NYC;

investigates :isOpenedBy :open-investigation-1

.

Doe
Dodgson
checks every system
to which he has access
for information about Doe
:open-source-search-2 a :Search;
New York State's
website for outstanding arrest warrants for unpaid child support
indicates that the
John Henry Doe :query [:aboutPerson

[:name

[:personGivenName "John",

:personMiddleName "Henry",

:personSurName "Doe"];

who is associated with the address 123 Main , New York, NY 10044 :homeAddress

[:locationAddress "123 Main Street";

:locationCityName "New York";

:locationStateName "NY";

:locationPostalCodeID "10044"];

with a DOB of 8/24/75 :birthDate 1975-08-24;

]

];

:result

[:datetime 2005-10-02T12:00:01;

is the subject of an outstanding child support warrant

:source

<http://appsext4.dos.state.ny.us/

csewarrants_public/cse_search>;

:document :ny-warrant

]

.

# <!-- arrest subject -->

# Arrest Location is not correct in the example. I have invented one.

:18USC228 a j:ArrestCharge.

[:date 2005-11-01;

Dodgson arrests j:arrestOfficial :Dodgson;
John Henry Doe j:arrestSubject :JohnDoe;
j:arrestLocation [:locationCityName "New York";

:locationStateName "NY"];

j:arrestCharge :18USC228;

j:arrestSubjectRightsReadIndicator true]

a j:Arrest.