In the wake of the World Trade Center attack on 9/11/2001, information sharing became a primary requirement, especially regarding crime and terrorist activities. This resulted in a task form being formed, eventually resulting in the creation of the National Information Exchange Model (NIEM), a standard based upon earlier standards (JGXDM with the Justice Department and LEX with the FBI), with the maintenance of the standard itself ultimately under the aegis of the newly created Homeland Security Department.
NIEM has, since that time, become the de facto standard through many different US departments, including the Department of Defense, the USDA, the Centers for Medicare and Medicaid (via the Department of Health and Human Services) and the Department of Transportation. Additionally, many states, municipalities, and tribes have become part of the NIEM network, typically for crime and disease reporting. Other departments are piloting projects with NIEM and likely will join the network within the next decade and a number of countries have either adopted NIEM or created compatible standards. Academic institutions (most notably Georgia Tech in Atlanta) have also heavily contributed to NIEM tools and uses.
NIEM as XML and JSON
Because XML was the dominant information exchange language at the time, request and response feeds were written with XML in mind. For instance, suppose the following incident was reported.\
Suspect:
Selina Kyle
Female, Latino, Age 28, Dark Hair, Slim Build, Wearing a purple bodysuit, domino mask and cat ears.
Victim:
Bruce Wayne
Male, White, Age 32, Dark Hair, Muscular Build, Wearing a gray and black bodysuite, cowl with bat ears, and black cape
Crime:
Theft of the Batmobile, Vehicular theft, Black exterior, Black interior, V10, 1000cc from Batcave, Wayne Manor, Gotham, Massachusetts, Feb 2, 2022.
Reporting Officer: James Gordon
Gotham City Police Department, Gotham, Massachusetts
In NIEM XML (moving towards the 5.0 standard) this would be reported as:
<niem-5.0 xmlns="http://release.niem.gov/niem/niem-core/5.0/">
<suspectActivity>
<SuspectPerson>
<PersonName>
<PersonGivenName>Selina</PersonGivenName>
<PersonSurName>Kyle</PersonSurName>
</PersonName>
<PersonRaceText>Latino</PersonRaceText>
<PersonHairColorText>Dark</PersonHairColorText>
<PersonWeightMeasure unitCode="KGM">Slim</PersonWeightMeasure>
<PersonClothingText>Purple bodysuit, domino mask and cat ears</PersonClothingText>
</SuspectPerson>
<SuspectActivityDescriptionText>Theft of the Batmobile</SuspectActivityDescriptionText>
</suspectActivity>
<victimActivity>
<VictimPerson>
<PersonName>
<PersonGivenName>Bruce</PersonGivenName>
<PersonSurName>Wayne</PersonSurName>
</PersonName>
<PersonRaceText>White</PersonRaceText>
<PersonHairColorText>Dark</PersonHairColorText>
<PersonWeightMeasure unitCode="KGM">Muscular</PersonWeightMeasure>
<PersonClothingText>Gray and black bodysuite, cowl with bat ears, and black cape</PersonClothingText>
</VictimPerson>
<VictimVictimizationDescriptionText>Vehicular theft</VictimVictimizationDescriptionText>
</victimActivity>
<activityLocation>
<LocationName>Batcave, Wayne Manor, Gotham, Massachusetts</LocationName>
<LocationJurisdictionText>Massachusetts</LocationJurisdictionText>
</activityLocation>
<crimeEvent>
<CrimeEventDescriptionText>Theft of the Batmobile</CrimeEventDescriptionText>
<CrimeEventVehicle>
<VehicleColorText>Black</VehicleColorText>
<VehicleInteriorColorText>Black</VehicleInteriorColorText>
<VehicleEngineSizeText>V10, 1000cc</VehicleEngineSizeText>
</CrimeEventVehicle>
<CrimeEventDate>
<DateTime>2022-02-02</DateTime>
</CrimeEventDate>
</crimeEvent>
<activityReportingPerson>
<PersonName>
<PersonGivenName>James</PersonGivenName>
<PersonSurName>Gordon</PersonSurName>
</PersonName>
<PersonOrganizationAssociation>
<OrganizationName>GPD</OrganizationName>
</PersonOrganizationAssociation>
</activityReportingPerson>
</niem-5.0>
Through this, agencies can query against a NIEM database to find related content (has Ms. Kyle been involved in any other thefts), any reported sightings of the batmobile, and so forth. In 2017, the use of JSON was piloted for new applications. The same report, rendered in JSON, would look as follows:
{
"Suspect": {
"PersonName": {
"NC:PersonGivenName": "Selina",
"nc:PersonSurName": "Kyle"
},
"PersonDemographic": {
"nc:PersonSexCode": {
"nc:SexCodeValue": "F"
},
"nc:PersonRaceCode": {
"nc:RaceCodeValue": "Latino"
},
"nc:PersonAgeMeasure": {
"nc:AgeMeasureValue": 28
},
"nc:PersonHairColorCode": {
"nc:HairColorCodeValue": "Dark"
},
"nc:PersonBuildMeasure": {
"nc:BuildMeasureValue": "Slim"
},
"nc:PersonClothingDescriptionText": {
"nc:ClothingDescriptionTextValue": "purple bodysuit, domino mask and cat ears"
}
}
},
"Victim": {
"PersonName": {
"nc:PersonGivenName": "Bruce",
"nc:PersonSurName": "Wayne"
},
"PersonDemographic": {
"nc:PersonSexCode": {
"nc:SexCodeValue": "M"
},
"nc:PersonRaceCode": {
"nc:RaceCodeValue": "White"
},
"nc:PersonAgeMeasure": {
"nc:AgeMeasureValue": 32
},
"nc:PersonHairColorCode": {
"nc:HairColorCodeValue": "Dark"
},
"nc:PersonBuildMeasure": {
"nc:BuildMeasureValue": "Muscular"
},
"nc:PersonClothingDescriptionText": {
"nc:ClothingDescriptionTextValue": "gray and black bodysuite, cowl with bat ears, and black cape"
}
}
},
"Crime": {
"nc:CrimeOffenseText": {
"nc:OffenseTextValue": "Theft of the Batmobile"
},
"nc:CrimeOffenseCategoryText": {
"nc:OffenseCategoryTextValue": "Vehicular theft"
},
"nc:CrimeLocationDescriptionText": {
"nc:LocationDescriptionTextValue": "Batcave, Wayne Manor, Gotham, Massachusetts"
},
"nc:CrimeVehicleColorDescriptionText": {
"nc:ColorDescriptionTextValue": "Black exterior, Black interior"
},
"nc:CrimeVehicleEngineMeasureText": {
"nc:EngineMeasureTextValue": "V10, 1000cc"
},
"nc:CrimeIncidentDate": {
"nc:Date": {
"nc:DateValue": "Feb 2, 2022"
}
}
}
} // Reporting officer left off
Moving to Graphy NIEM
While it would appear at first blush that NIEM is primarily a document standard, this is somewhat misleading. Often you may have related incidents that may impact (or be perpetrated by) the same people or groups, which means that on the back end, what actually emerges is a graph of different types of objects: suspects, victims, crimes, property, modus operandi, location and so forth. Watch any procedural police show and sooner or later, you’ll see detectives putting up pictures of the different kinds of information on sticky notes connected by pins, which is, at its core, a simple graph.
As a consequence, certain parties (including this author) have been pushing the NIEM working group to release an RDF profile for NIEM, something which has come to fruition with the recent NIEM 5.0 release. To illustrate this, the scenario is expanded to show what a NIEM graph might look like with another perpetrator and crime, expressed as the RDF Turtle language:
@prefix niem-ec: <http://release.niem.gov/niem/structures/5.0/> .
@prefix niem-exi: <http://release.niem.gov/niem/external/xsd/5.0/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
# Suspects
[] a niem-ec:PersonType ;
niem-ec:personName [
niem-ec:PersonNameText "Selina Kyle"
] ;
niem-ec:personRaceCode niem-exi:Latino ;
niem-ec:personAgeMeasure "28"^^xsd:nonNegativeInteger ;
niem-ec:personHairColorText "Dark Hair" ;
niem-ec:personBodyBuildText "Slim Build" ;
niem-ec:personClothing [
niem-ec:ClothingType [
niem-ec:clothingColorText "Purple" ;
niem-ec:clothingDescriptionText "Bodysuit"
]
] ;
niem-ec:personMask [
niem-ec:MaskType [
niem-ec:maskDescriptionText "Domino Mask" ;
niem-ec:maskShapeText "Cat Ears"
]
] .
[] a niem-ec:PersonType ;
niem-ec:personName [
niem-ec:PersonNameText "Harleen Quinzel"
] ;
niem-ec:personRaceCode niem-exi:Latino ;
niem-ec:personAgeMeasure "28"^^xsd:nonNegativeInteger ;
niem-ec:personHairColorText "Blonde and Red hair in a polytail" ;
niem-ec:personBodyBuildText "Slim Build" ;
niem-ec:personClothing [
niem-ec:ClothingType [
niem-ec:clothingColorText "Red" ;
niem-ec:clothingColorText "White" ;
niem-ec:clothingDescriptionText "Harlequin type body suit."
]
] ;
niem-ec:personAlias [
niem-ec:PersonAliasText "Harley Quinn"
] .
# Victim
[] a niem-ec:PersonType ;
niem-ec:personName [
niem-ec:PersonNameText "Bruce Wayne"
] ;
niem-ec:personRaceCode niem-exi:White ;
niem-ec:personAgeMeasure "32"^^xsd:nonNegativeInteger ;
niem-ec:personHairColorText "Dark Hair" ;
niem-ec:personBodyBuildText "Muscular Build" ;
niem-ec:personClothing [
niem-ec:ClothingType [
niem-ec:clothingColorText "Gray" ;
niem-ec:clothingColorText "Black" ;
niem-ec:clothingDescriptionText "Bodysuite"
]
] ;
niem-ec:personMask [
niem-ec:MaskType [
niem-ec:maskDescriptionText "Cowl with Bat Ears" ;
niem-ec:maskShapeText "Black Cape"
]
] .
# Crime
[] a niem-ec:IncidentType ;
niem-ec:incidentCaseNumber "45221" ;
niem-ec:incidentCategoryText "Vehicular Theft" ;
niem-ec:incidentLocation [
niem-ec:LocationType [
niem-ec:locationName [
niem-ec:LocationNameText "Batcave, Wayne Manor, Gotham, Massachusetts"
]
]
] ;
niem-ec:incidentDate [
niem-ec:DateType [
niem-ec:dateTimeRepresentation [
niem-ec:DateTimeRepresentationText "2 Feb 2022"
]
]
] ;
niem-ec:incidentVehicle [
niem-ec:VehicleType [
niem-ec:vehicleColorPrimaryText "Black" ;
niem-ec:vehicleColorSecondaryText "Black" ;
niem-ec:vehicleEngineTypeText "V10" ;
niem-ec:vehicleEngineSizeMeasure "1000cc"
]
] .
# Reporting Officer
[] a niem-ec:OrganizationType ;
niem-ec:organizationName [
niem-ec:OrganizationNameText "Gotham City Police Department"
] ;
niem-ec:organizationLocation [
niem-ec:LocationType [
niem-ec:locationName [
niem-ec:LocationNameText "Gotham, Massachusetts"
]
]
] ;
niem-ec:organizationPerson [
niem-ec:PersonType [
niem-ec:personName [
niem-ec:PersonNameText "James Gordon"
]
]
] .
# Possible Related Crime
[] a niem-ec:IncidentType ;
niem-ec:incidentCaseNumber "42355" ;
niem-ec:incidentCategoryText "Theft" ;
niem-ec:incidentLocation [
niem-ec:LocationType [
niem-ec:locationName [
niem-ec:LocationNameText "Gotham City Museum of Art"
]
]
] ;
niem-ec:incidentThing [
niem-ec:ThingType [
niem-ec:thingName [
niem-ec:ThingNameText "Cat's Eye Gem"
]
]
] ;
niem-ec:incidentPerson [
niem-ec:PersonType [
niem-ec:personName [
niem-ec:PersonNameText "Selina Kyle"
] ;
niem-ec:personAlias [
niem-ec:PersonAliasText "Catwoman"
]
]
] .
These samples are, by necessity, limited in size and scope. Still, any given incident report will likely have hundreds or thousands of such variables that determine different characteristics of crimes and their associated perpetrators and victims. A knowledge graph is able to take this information of varying types of incidents and provide suggestions for data clustering – similar weapons or modus operandi used, sightings of wanted individuals, published papers that may provide psychological clues, unusual monetary activity, and so forth.
Using such graph techniques also extends well beyond the immediate confines of law enforcement. Semantic systems can often identify aliases and alliances – individuals with multiple identities or who may work in conjunction with specific people. This can identify organizations (named or otherwise) working towards longer-term goals that may be counterproductive or criminal. They can identify patterns of environmental degradation, especially when multiple shell companies are involved. They can identify at-risk populations based on early markers or incidents.
At a larger scale, these graphs can also be used to create probabilistic modeling and simulations (Bayesian analysis) that can be tracked and made transparent, a problem with black box machine learning systems where determining which combinations of parameters (injected over time) is nearly impossible. Because such graphs can pull from multiple domains, they can also reveal unexpected correlations and when correlations are (and aren’t) significant.
Conclusion
Governments provide the most meaningful data of any organization, everything from health and safety data to ownership and locations of resources to hostile military actions. NIEM is becoming a fundamental means of capturing this data, and NIEM’s RDF profile will provide an in-depth tool to understand and act upon that information at a level never before seen.
Kurt Cagle is a futurist and the managing editor of The Cagle Report, an exploration of what’s going on in the computational cognitive space. If you have questions about the domain, would like to suggest stories, or just want to shoot the breeze, feel free to set up a meeting in Kurt’s Calendly page or find me on Linked In.
You must log in to post a comment.