Difference between revisions of "TruxtonRelation"
| Line 1: | Line 1: | ||
| − | This class lets you add to the [[Relation Table | Relation]] table in Truxton. | + | This class lets you add to the <code><nowiki>[</nowiki>[[Relation Table|Relation]]<nowiki>]</nowiki></code> table in Truxton. |
This is how to establish some sort of relation between items in Truxton to create a [https://en.wikipedia.org/wiki/Graph_(discrete_mathematics) graph.] | This is how to establish some sort of relation between items in Truxton to create a [https://en.wikipedia.org/wiki/Graph_(discrete_mathematics) graph.] | ||
| 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 | < | + | This corresponds to the <code>[A_ID]</code> column of the <code><nowiki>[</nowiki>[[Relation Table|Relation]]<nowiki>]</nowiki></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 12: | Line 12: | ||
==<code>atype</code>== | ==<code>atype</code>== | ||
The type of the thing that <code>a</code> represents. | The type of the thing that <code>a</code> represents. | ||
| − | This corresponds to the <code>A_ObjectTypeID</code> column of the [[Relation Table | < | + | This corresponds to the <code>[A_ObjectTypeID]</code> column of the <code><nowiki>[</nowiki>[[Relation Table|Relation]]<nowiki>]</nowiki></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.]] |
==<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> | + | This corresponds to the <code>[B_ID]</code> column of the <code><nowiki>[</nowiki>[[Relation Table|Relation]]<nowiki>]</nowiki></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. | This is also known as a [https://en.wikipedia.org/wiki/Vertex_(graph_theory) vertex] in a graph. | ||
| Line 23: | Line 23: | ||
==<code>btype</code>== | ==<code>btype</code>== | ||
The type of the thing that <code>b</code> represents. | The type of the thing that <code>b</code> represents. | ||
| − | This corresponds to the <code>B_ObjectTypeID</code> column of the [[Relation Table | < | + | This corresponds to the <code>[B_ObjectTypeID]</code> column of the <code><nowiki>[</nowiki>[[Relation Table|Relation]]<nowiki>]</nowiki></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.]] |
==<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>RelationTypeID</code> column of the [[Relation Table | < | + | This corresponds to the <code>[RelationTypeID]</code> column of the <code><nowiki>[</nowiki>[[Relation Table|Relation]]<nowiki>]</nowiki></code> table. |
| − | It should be a value in the <code>ID</code> column of the <code>RelationType</code> table or you can use a [[Relation Types | defined constant.]] | + | It should be a value in the <code>[ID]</code> column of the <code>[RelationType]</code> table or you can use a [[Relation Types | defined constant.]] |
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 | < | + | This corresponds to the <code>[SourceID]</code> column of the <code><nowiki>[</nowiki>[[Relation Table|Relation]]<nowiki>]</nowiki></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>SourceObjectTypeID</code> column of the [[Relation Table | < | + | This corresponds to the <code>[SourceObjectTypeID]</code> column of the <code><nowiki>[</nowiki>[[Relation Table|Relation]]<nowiki>]</nowiki></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.]] |
==<code>save()</code>== | ==<code>save()</code>== | ||
| − | This will commit the information to the [[Relation Table | < | + | This will commit the information to the <code><nowiki>[</nowiki>[[Relation Table|Relation]]<nowiki>]</nowiki></code> table. |
It will return [https://docs.python.org/3/library/constants.html#True True] if the record was saved to the database, [https://docs.python.org/3/library/constants.html#False False] if there was an error. | It will return [https://docs.python.org/3/library/constants.html#True True] if the record was saved to the database, [https://docs.python.org/3/library/constants.html#False False] if there was an error. | ||
| Line 50: | Line 50: | ||
=Sample= | =Sample= | ||
| − | + | <source lang="Python" highlight="61-67"> | |
| − | < | ||
import truxton | import truxton | ||
import shutil | import shutil | ||
| Line 132: | Line 131: | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
main() | main() | ||
| − | </ | + | </source> |
Revision as of 17:17, 30 November 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.
Contents
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 [B_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 should be a value in the [ID] column of the [RelationType] table or you can use a defined constant.
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.
Remarks
When creating a relationship between objects in Truxton, the relationship should read "A is a XXX of B"
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")
a = child_file.newartifact()
a.type = truxton.ENTITY_TYPE_ACCOUNT
a.value = "r0cker"
a.datatype = truxton.DATA_TYPE_ASCII
a.length = 6
a.save()
b = child_file.newartifact()
b.type = truxton.ENTITY_TYPE_PERSON
b.value = "Bob Smith"
b.datatype = truxton.DATA_TYPE_ASCII
b.length = 9
b.save()
relation = child_file.newrelation()
relation.a = a.id
relation.atype = truxton.OBJECT_TYPE_ENTITY
relation.b = b.id
relation.btype = truxton.OBJECT_TYPE_ENTITY
relation.relation = truxton.RELATION_LOGON_ACCOUNT
relation.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()