Difference between revisions of "TruxtonRelation"
(→Sample) |
|||
| (10 intermediate revisions by the same user not shown) | |||
| 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.] | ||
=Attributes and Methods= | =Attributes and Methods= | ||
| − | ==<code>a</code>== | + | ==<code>a: str</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 <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. | ||
| − | ==<code>atype</code>== | + | ==<code>atype: int</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: str</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>[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. | ||
| − | ==<code>btype</code>== | + | ==<code>btype: int</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: int</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> | + | 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 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: str</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 <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: int</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> | + | 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() -> boolean</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. | ||
| + | |||
| + | =Remarks= | ||
| + | When creating a relationship between objects in Truxton, the relationship should read "A is a XXX of B" | ||
=Sample= | =Sample= | ||
| − | + | <source lang="Python" highlight="64-70"> | |
| − | < | + | import sys |
| + | sys.path.append('C:/Program Files/Truxton/SDK') | ||
import truxton | import truxton | ||
import shutil | import shutil | ||
| Line 62: | Line 71: | ||
event_type.name = name | event_type.name = name | ||
event_type.save() | event_type.save() | ||
| + | return None | ||
def add_file(parent_truxton_file, filename): | def add_file(parent_truxton_file, filename): | ||
| Line 90: | Line 100: | ||
child_file = add_file(parent_file, "JW-v-DOJ-reply-02743.pdf") | 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() | ||
| + | |||
| + | return None | ||
def main(): | def main(): | ||
| Line 106: | Line 133: | ||
add_ec(root_file) | add_ec(root_file) | ||
| + | |||
| + | return None | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
| − | main() | + | sys.exit(main()) |
| − | </ | + | </source> |
Latest revision as of 15:14, 27 January 2024
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: str
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: int
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: str
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: int
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: int
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: str
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: int
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() -> boolean
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 sys
sys.path.append('C:/Program Files/Truxton/SDK')
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()
return None
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()
return None
def main():
t = truxton.create()
media = add_media(t)
root_file = media.addroot()
root_file.save()
add_ec(root_file)
return None
if __name__ == "__main__":
sys.exit(main())