# cdk 2006-04-29
#
# run with
# python cwm.py http://dig.csail.mit.edu/TAMI/cdk/scenario3/data.n3 http://dig.csail.mit.edu/TAMI/cdk/scenario3/schema.n3 http://dig.csail.mit.edu/TAMI/cdk/scenario3/rules.n3 --think --filter="http://dig.csail.mit.edu/TAMI/cdk/scenario3/filter.n3"

@keywords is, of, a .

@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 dc: <http://purl.org/dc/elements/1.1/> .
@prefix string: <http://www.w3.org/2000/10/swap/string#>.

@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#>.

@prefix log: <http://www.w3.org/2000/10/swap/log#> .

@prefix ts: <http://dig.csail.mit.edu/TAMI/schema#> .
@prefix td: <http://dig.csail.mit.edu/TAMI/cdk/scenario3/data.n3#> .
@prefix tr: <http://dig.csail.mit.edu/TAMI/cdk/scenario3/rules.n3#> .

########################################## schema ######################################################

ts:Person a rdfs:Class
.
ts:Official a rdfs:Class
	; rdfs:subClassOf ts:Person
.
ts:Subject a rdfs:Class
	; rdfs:subClassOf ts:Person
.
ts:Suspect a rdfs:Class
	; rdfs:subClassOf ts:Subject
.
ts:Victim a rdfs:Class
	; rdfs:subClassOf ts:Subject
.

ts:PersonName a rdfs:Class
.
xsd:Date a rdfs:Class
.

ts:Location a rdfs:Class
.
ts:Organization a rdfs:Class
.
ts:Office rdfs:subClassOf ts:Organization
.
ts:Employment a rdfs:Class
.
ts:EmploymentPosition a rdfs:Class
.

ts:name a rdf:Property
	; rdfs:domain ts:Person
	; rdfs:range ts:PersonName
. 
ts:birthDate a rdf:Property
	; rdfs:domain ts:Person
	; rdfs:range xsd:Date
.
ts:homeAddress a rdf:Property
	; rdfs:domain ts:Person
	; rdfs:range ts:Location
.
ts:work a rdf:Property
	; rdfs:domain ts:Person
	; rdfs:range ts:Organization
.
ts:position a rdf:Property
	; rdfs:domain ts:Employment
	; rdfs:range ts:Employment
.
ts:employer a rdf:Property
	; rdfs:domain ts:Employment
	; rdfs:range ts:Organization
.
ts:address a rdf:Property
	; rdfs:domain ts:Employment
	; rdfs:range ts:Location
.

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

u:locationAddress a rdf:Property
	; rdfs:domain ts:Location
	; rdfs:range rdfs:Literal
.
u:locationCityName a rdf:Property
	; rdfs:domain ts:Location
	; rdfs:range rdfs:Literal
.
u:locationStateName a rdf:Property
	; rdfs:domain ts:Location
	; rdfs:range rdfs:Literal
.
u:locationPostalCodeID a rdf:Property
	; rdfs:domain ts:Location
	; rdfs:range rdfs:Literal
.

ts:organizationName a rdf:Property
	; rdfs:domain ts:Organization
	; rdfs:range rdfs:Literal
.
ts:address a rdf:Property
	; rdfs:domain ts:Organization
	; rdfs:range ts:Location
.
ts:partOf a rdf:Property
	; rdfs:domain ts:Organization
	; rdfs:range ts:Organization
.
ts:partOfStar a rdf:Property
	; rdfs:domain ts:Organization
	; rdfs:range ts:Organization
.
ts:office a rdf:Property
	; rdfs:domain ts:Organization
	; rdfs:range [a ts:Location]
.

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

ts:nature a rdf:Property
	; rdfs:domain ts:Database
	; rdfs:range ts:Nature
.

ts:Nature a rdfs:Class
.
ts:Commercial a ts:Nature
.

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

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

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

ts:Flight a rdfs:Class
.

ts:number a rdf:Property
	; rdfs:domain ts:Flight
	; rdfs:range rdfs:Literal
.
ts:origin a rdf:Property
	; rdfs:domain ts:Flight
	; rdfs:range air:Iata
.
ts:destination a rdf:Property
	; rdfs:domain ts:Flight
	; rdfs:range air:Iata
.

ts:Event a rdfs:Class
.
ts:Search a rdfs:Class
	; rdfs:subClassOf ts:Event
.
ts:Transfer a rdfs:Class
	; rdfs:subClassOf ts:Event
.
ts:Assignment a rdfs:Class
	; rdfs:subClassOf ts:Event
.
ts:CaseOpening a rdfs:Class
	; rdfs:subClassOf ts:Event
.
ts:WarrantIssue a rdfs:Class
	; rdfs:subClassOf ts:Event
.

ts:antecedent a rdf:Property
	; rdfs:domain ts:Event
	; rdfs:range ts:Event
.
ts:logOwner a rdf:Property
	; rdfs:domain ts:Event
	; rdfs:range ts:Organization
.
ts:dateTime a rdf:Property
	; rdfs:domain ts:Event
	; rdfs:range xsd:DateTime
.
dc:Description a rdf:Property
	; rdfs:domain ts:Event
	; rdfs:range rdfs:Literal
.
dc:Identifier a rdf:Property
	; rdfs:domain ts:Event
	; rdfs:range rdfs:Literal
.

ts:Search a rdfs:Class
.
ts:SearchQuery a rdfs:Class
.
ts:SearchResult a rdfs:Class
.
ts:File a rdfs:Class.	## maybe better Record

ts:query a rdf:Property
	; rdfs:domain ts:Search
	; rdfs:range ts:SearchQuery
.
ts:result a rdf:Property
	; rdfs:domain ts:Search
	; rdfs:range ts:SearchResult
.
ts:aboutPerson a rdf:Property
	; rdfs:domain ts:SearchQuery
		, ts:SearchResult
	; rdfs:range ts:Person
.

ts:source a rdf:Property
	; rdfs:domain ts:SearchResult
	; rdfs:range ts:Database
.
ts:content a rdf:Property
	; rdfs:domain ts:SearchResult
	; rdfs:range ts:File     ## maybe better Record
.

ts:sender a rdf:Property
	; rdfs:domain ts:Transfer
		, ts:TransferPlus
	; rdfs:range ts:Official
	; rdfs:range ts:Organization
.
ts:recipient a rdf:Property
	; rdfs:domain ts:Transfer
		, ts:TransferPlus
	; rdfs:range ts:Official
	; rdfs:range ts:Organization
.
ts:subject a rdf:Property
	; rdfs:domain ts:Transfer
	; rdfs:range ts:Person
.
ts:content a rdf:Property
	; rdfs:domain ts:Transfer
	; rdfs:range rdfs:Literal		## pensar, quizas Record
.
ts:sorn a rdf:Property
	; rdfs:domain ts:Transfer
	; rdfs:range ts:Sorn
.


ts:Activity a rdfs:Class
.

ts:purpose a rdf:Property
	; rdfs:domain ts:Transfer
	; rdfs:range ts:Activity
.


ts:ok a rdf:Property
	; rdfs:domain ts:purpose
#	; rdfs:domain ts:recipient
	; rdfs:range rdfs:Literal
.

ts:check a rdf:Property
	; rdfs:domain ts:recipient
	; rdfs:range ts:Check
.
ts:Check a rdfs:Class
.
ts:Ok a ts:Check
.



ts:TransferPlus a rdfs:Class
.


ts:status a rdf:Property
	; rdfs:domain ts:Transfer
	; rdfs:range ts:Status
.

ts:Status a rdfs:Class
.

ts:LegalTransfer a ts:Status
.
ts:UnclearTransfer a ts:Status
.
ts:IllegalTransfer a ts:Status
.

ts:Kind a rdfs:Class
.

ts:Composite a ts:Kind
.

########################################### estoy cambiando TransferPlus por Transfer con Kind Composite
########################################### acabar de pensar y actuar en consecuencia

ts:transfer1st a rdf:Property
	; rdfs:range ts:Transfer
.

ts:transferRest a rdf:Property
	; rdfs:range ts:Transfer
.

ts:status a rdf:Property
	; rdfs:domain ts:TransferPlus
	; rdfs:range rdfs:Literal
.

ts:emptyTransfer a ts:Transfer
.


ts:recipient a rdf:Property
	; rdfs:domain ts:RoutineUse
	; rdfs:range ts:Organization
.

ts:PurposePair a rdfs:Class
.

ts:intendedPurpose a rdf:Property
	; rdfs:domain ts:PurposePair
	; rdfs:range ts:Purpose
.

ts:usedPurpose a rdf:Property
	; rdfs:domain ts:PurposePair
	; rdfs:range ts:Purpose
.


ts:Assignment a rdfs:Class	# es muy parecido a Transfer, quizas quitar
.
ts:sender a rdf:Property
	; rdfs:domain ts:Assignment
	; rdfs:range ts:Official
		, ts:Organization
.
ts:recipient a rdf:Property
	; rdfs:domain ts:Assignment
	; rdfs:range ts:Official
		, ts:Organization
.
ts:subject a rdf:Property
	; rdfs:domain ts:Assignment
	; rdfs:range ts:Event
.
ts:content a rdf:Property
	; rdfs:domain ts:Assignment
	; rdfs:range rdfs:Literal
.


ts:CaseOpening a rdfs:Class
.
ts:Case a rdfs:Class
.

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

ts:isOpenedBy a rdf:Property
	; rdfs:domain ts:Case
	; rdfs:range ts:CaseOpening
.
c:caseTrackingID a rdf:Property
	; rdfs:domain ts:Case
	; rdfs:range rdfs:Literal
.
c:caseCategory a rdf:Property
	; rdfs:domain ts:Case
	; rdfs:range c:CaseCategoryText
.

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

ts:WarrantIssue a rdfs:Class
.
j:Arrest a rdfs:Class
.

ts:subject a rdf:Property
	; rdfs:domain ts:WarrantIssue
	; rdfs:range ts:KKW		# what is this?
.
j:initiatingAttorney a rdf:Property
	; rdfs:domain ts:WarrantIssue
	; rdfs:range ts:Official
.
j:judge a rdf:Property
	; rdfs:domain ts:WarrantIssue
	; rdfs:range ts:Official
.

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

j:arrestOfficial a rdf:Property
	; rdfs:domain j:Arrest
	; rdfs:range ts:Official
.
j:arrestSubject a rdf:Property
	; rdfs:domain j:Arrest
	; rdfs:range ts:Subject
.
j:arrestLocation a rdf:Property
	; rdfs:domain j:Arrest
	; rdfs:range ts:Location
.
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 j:ArrestWarrant
	; rdfs:range c:CaseCategoryText
.
j:caseCourt a rdf:Property
	; rdfs:domain j:ArrestWarrant
	; rdfs:range ts:Court
.
j:arrestSubject a rdf:Property
	; rdfs:domain j:ArrestWarrant
	; rdfs:range ts:Subject
.
j:data a rdf:Property
	; rdfs:domain j:ArrestWarrant
	; rdfs:range ts:ArrestData
.



### Sorn

ts:Sorn a rdfs:Class
.
ts:DataCategory a rdfs:Class
.
ts:RoutineUse a rdfs:Class
.

ts:notice a rdf:Property
	; rdfs:domain ts:Sorn
	; rdfs:range dc:identifier
.

dc:title a rdf:Property
	; rdfs:domain ts:Sorn
	; rdfs:range rdfs:Literal
.

dc:date a rdf:Property
	; rdfs:domain ts:Sorn
	; rdfs:range xsd:Date
.

dc:publisher a rdf:Property
	; rdfs:domain ts:Sorn
	; rdfs:range ts:Organization
.

dc:description a rdf:Property
	; rdfs:domain ts:Sorn
		, ts:RoutineUse
	; rdfs:range rdfs:Literal
.

dc:creator a rdf:Property
	; rdfs:domain ts:Sorn
	; rdfs:range ts:Organization
.

ts:allowedSource a rdf:Property
	; rdfs:domain ts:Sorn
	; rdfs:range ts:Database
.

ts:category a rdf:Property
	; rdfs:domain ts:Sorn
		, ts:RoutineUse
	; rdfs:range ts:DataCategory
.

ts:purpose a rdf:Property
	; rdfs:domain ts:Sorn
		, ts:RoutineUse
	; rdfs:range ts:Activity
.

ts:routineUse a rdf:Property
	; rdfs:domain ts:Sorn
	; rdfs:range ts:RoutineUse
.

ts:recipient a rdf:Property
	; rdfs:domain ts:Sorn
		, ts:RoutineUse
	; rdfs:range ts:Organization
.


### Legalsystem

ts:LegalSystem a rdfs:Class
.

ts:legalSystem a rdf:Property
	; rdfs:domain ts:Activity
	; rdfs:range ts:LegalSystem
.
ts:specializationOf a rdf:Property
	; rdfs:domain ts:Activity
	; rdfs:range ts:Activity
.
ts:specializationOfStar a rdf:Property
	; rdfs:domain ts:Activity
	; rdfs:range ts:Activity
.


