Difference between revisions of "TruxtonRelation"

From truxwiki.com
Jump to navigation Jump to search
Line 6: Line 6:
 
==<code>a</code>==
 
==<code>a</code>==
 
This is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the object.
 
This is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the object.
 +
This corresponds to the <code>A_ID</code> column of the [[Relation Table | <code>Relation</code>]] table.
 
This combined with <code>atype</code> allows Truxton to retrieve the correct record from the database.
 
This combined with <code>atype</code> allows Truxton to retrieve the correct record from the database.
 
This is also known as a [https://en.wikipedia.org/wiki/Vertex_(graph_theory) vertex] in a graph.
 
This is also known as a [https://en.wikipedia.org/wiki/Vertex_(graph_theory) vertex] in a graph.
Line 16: Line 17:
 
==<code>b</code>==
 
==<code>b</code>==
 
This is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the object.
 
This is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the object.
 +
This corresponds to the <code>A_ID</code> column of the [[Relation Table | <code>Relation</code>]] table.
 
This combined with <code>btype</code> allows Truxton to retrieve the correct record from the database
 
This combined with <code>btype</code> allows Truxton to retrieve the correct record from the database
 +
This is also known as a [https://en.wikipedia.org/wiki/Vertex_(graph_theory) vertex] in a graph.
  
 
==<code>btype</code>==
 
==<code>btype</code>==
Line 25: Line 28:
 
==<code>relation</code>==
 
==<code>relation</code>==
 
This provides the reason why <code>a</code> and <code>b</code> are related.
 
This provides the reason why <code>a</code> and <code>b</code> are related.
This corresponds to the <code>SourceObjectTypeID</code> column of the [[Relation Table | <code>Relation</code>]] table.
+
This corresponds to the <code>RelationTypeID</code> column of the [[Relation Table | <code>Relation</code>]] table.
 
 
 
It is known as an [https://en.wikipedia.org/wiki/Vertex_(graph_theory) edge] in a graph.
 
It is known as an [https://en.wikipedia.org/wiki/Vertex_(graph_theory) edge] in a graph.
  
 
==<code>source</code>==
 
==<code>source</code>==
 
This is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the object this relation came from.
 
This is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the object this relation came from.
 +
This corresponds to the <code>SourceID</code> column of the [[Relation Table | <code>Relation</code>]] table.
 
This combined with <code>sourcetype</code> allows Truxton to retrieve the correct record from the database.
 
This combined with <code>sourcetype</code> allows Truxton to retrieve the correct record from the database.
  
 
==<code>sourcetype</code>==
 
==<code>sourcetype</code>==
 
The type of the thing that <code>source</code> represents.
 
The type of the thing that <code>source</code> represents.
This corresponds to the <code>B_ObjectTypeID</code> column of the [[Relation Table | <code>Relation</code>]] table.
+
This corresponds to the <code>SourceObjectTypeID</code> column of the [[Relation Table | <code>Relation</code>]] table.
 
It should contain a value in the <code>ID</code> column of the <code>ObjectType</code> table or you can use a [[Object Types | defined constant.]]
 
It should contain a value in the <code>ID</code> column of the <code>ObjectType</code> table or you can use a [[Object Types | defined constant.]]
  

Revision as of 06:14, 29 May 2020

This class lets you add to the Relation table in Truxton. This is how to establish some sort of relation between items in Truxton to create a graph.

Attributes and Methods

a

This is the GUID of the object. This corresponds to the A_ID column of the Relation table. This combined with atype allows Truxton to retrieve the correct record from the database. This is also known as a vertex in a graph.

atype

The type of the thing that a represents. This corresponds to the A_ObjectTypeID column of the Relation table. It should contain a value in the ID column of the ObjectType table or you can use a defined constant.

b

This is the GUID of the object. This corresponds to the A_ID column of the Relation table. This combined with btype allows Truxton to retrieve the correct record from the database This is also known as a vertex in a graph.

btype

The type of the thing that b represents. This corresponds to the B_ObjectTypeID column of the Relation table. It should contain a value in the ID column of the ObjectType table or you can use a defined constant.

relation

This provides the reason why a and b are related. This corresponds to the RelationTypeID column of the Relation table. It is known as an edge in a graph.

source

This is the GUID of the object this relation came from. This corresponds to the SourceID column of the Relation table. This combined with sourcetype allows Truxton to retrieve the correct record from the database.

sourcetype

The type of the thing that source represents. This corresponds to the SourceObjectTypeID column of the Relation table. It should contain a value in the ID column of the ObjectType table or you can use a defined constant.

save()

This will commit the information to the Relation table. It will return True if the record was saved to the database, False if there was an error.

Sample

import truxton
import shutil

from datetime import datetime
from calendar import timegm
from pathlib import Path

EPOCH_AS_FILETIME = 116444736000000000
HUNDREDS_OF_NANOSECONDS = 10000000

def date_to_filetime(dt):
  return EPOCH_AS_FILETIME + (timegm(dt.timetuple()) * HUNDREDS_OF_NANOSECONDS)

def create_event_type(t, id, name):
  event_type = t.neweventtype()
  event_type.id = id
  event_type.name = name
  event_type.save()

def add_file(parent_truxton_file, filename):
  source_file = open(filename, "rb")
  child = parent_truxton_file.newchild()
  child.name = Path(filename).name
  shutil.copyfileobj(source_file, child)
  source_file.close()
  child.save()

  return child

def add_media(t):
  media = t.newmedia()
  media.name = "Public Documents"
  media.description = "Publicly available documents"
  media.case = "DC-SNAFU-2016.2020"
  media.evidencebag = "EV-0937459386623-a"
  media.originator = "Jeffrey Jensen"
  media.latitude = 38.897661
  media.longitude = -77.036458
  media.type = truxton.MEDIA_TYPE_LOGICAL_FILES
  media.save()

  return media

def add_ec(parent_file ):
  child_file = add_file(parent_file, "JW-v-DOJ-reply-02743.pdf")

  artifact = child_file.newartifact()
  artifact.type = truxton.ENTITY_TYPE_AUTHOR
  artifact.value = "Bob Smith"
  artifact.datatype = truxton.DATA_TYPE_ASCII
  artifact.length = 9
  artifact.save()

def main():
  t = truxton.create()

  media = add_media(t)

  root_file = media.addroot()
  root_file.save()

  add_ec(root_file)

if __name__ == "__main__":
  main()