├── project
├── build.properties
├── assembly.sbt
└── plugins.sbt
├── version.sbt
├── stix-files
└── testfull.zip
├── .idea
├── vcs.xml
├── scala_compiler.xml
├── libraries
│ ├── sbt__org_ow2_asm_asm_5_2_jar.xml
│ ├── sbt__org_neo4j_neo4j_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_io_3_3_9_jar.xml
│ ├── sbt__org_ow2_asm_asm_tree_5_2_jar.xml
│ ├── sbt__org_ow2_asm_asm_util_5_2_jar.xml
│ ├── sbt__joda_time_joda_time_2_10_1_jar.xml
│ ├── sbt__net_sf_opencsv_opencsv_2_3_jar.xml
│ ├── sbt__org_neo4j_neo4j_csv_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_jmx_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_ssl_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_udc_3_3_9_jar.xml
│ ├── sbt__org_slf4j_slf4j_api_1_7_26_jar.xml
│ ├── sbt__org_slf4j_slf4j_nop_1_7_26_jar.xml
│ ├── sbt__org_neo4j_neo4j_dbms_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_index_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_common_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_cypher_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_kernel_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_unsafe_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_values_3_3_9_jar.xml
│ ├── sbt__org_ow2_asm_asm_analysis_5_2_jar.xml
│ ├── sbt__io_netty_netty_all_4_1_21_Final_jar.xml
│ ├── sbt__org_neo4j_neo4j_codegen_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_logging_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_resource_3_3_9_jar.xml
│ ├── sbt__org_apache_lucene_lucene_core_5_5_0_jar.xml
│ ├── sbt__org_neo4j_neo4j_graph_algo_3_3_9_jar.xml
│ ├── sbt__org_apache_commons_commons_text_1_1_jar.xml
│ ├── sbt__org_neo4j_neo4j_collections_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_graphdb_api_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_import_tool_3_3_9_jar.xml
│ ├── sbt__org_parboiled_parboiled_core_1_1_7_jar.xml
│ ├── sbt__org_scala_lang_scala_reflect_2_12_8_jar.xml
│ ├── sbt__org_apache_commons_commons_lang3_3_5_jar.xml
│ ├── sbt__org_bouncycastle_bcpkix_jdk15on_1_60_jar.xml
│ ├── sbt__org_bouncycastle_bcprov_jdk15on_1_60_jar.xml
│ ├── sbt__org_neo4j_neo4j_command_line_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_lucene_index_3_3_9_jar.xml
│ ├── sbt__org_apache_lucene_lucene_codecs_5_5_0_jar.xml
│ ├── sbt__com_typesafe_play_play_json_2_12_2_7_3_jar.xml
│ ├── sbt__org_neo4j_neo4j_configuration_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_cypher_ir_3_2_3_2_13_jar.xml
│ ├── sbt__org_neo4j_neo4j_cypher_ir_3_3_3_3_9_jar.xml
│ ├── sbt__org_typelevel_macro_compat_2_12_1_1_1_jar.xml
│ ├── sbt__org_neo4j_neo4j_graph_matching_3_1_6_jar.xml
│ ├── sbt__org_neo4j_neo4j_lucene_upgrade_3_3_9_jar.xml
│ ├── sbt__com_github_ben_manes_caffeine_caffeine_2_3_3_jar.xml
│ ├── sbt__com_github_workingDog_scalastix_2_12_1_0_jar.xml
│ ├── sbt__org_apache_commons_commons_compress_1_12_jar.xml
│ ├── sbt__org_neo4j_neo4j_consistency_check_3_3_9_jar.xml
│ ├── sbt__org_parboiled_parboiled_scala_2_11_1_1_7_jar.xml
│ ├── sbt__com_fasterxml_jackson_core_jackson_core_2_9_8_jar.xml
│ ├── sbt__org_apache_lucene_lucene_queryparser_5_5_0_jar.xml
│ ├── sbt__com_typesafe_play_play_functional_2_12_2_7_3_jar.xml
│ ├── sbt__org_neo4j_neo4j_cypher_compiler_3_1_3_1_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_cypher_compiler_3_3_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_cypher_frontend_3_1_3_1_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_cypher_frontend_3_3_3_3_9_jar.xml
│ ├── sbt__org_neo4j_neo4j_cypher_compiler_2_3_2_3_12_jar.xml
│ ├── sbt__org_neo4j_neo4j_cypher_compiler_3_2_3_2_13_jar.xml
│ ├── sbt__org_neo4j_neo4j_cypher_frontend_2_3_2_3_12_jar.xml
│ ├── sbt__org_neo4j_neo4j_cypher_frontend_3_2_3_2_13_jar.xml
│ ├── sbt__org_neo4j_neo4j_primitive_collections_3_3_9_jar.xml
│ ├── sbt__com_fasterxml_jackson_core_jackson_databind_2_9_8_jar.xml
│ ├── sbt__org_apache_lucene_lucene_backward_codecs_5_5_0_jar.xml
│ ├── sbt__org_apache_lucene_lucene_analyzers_common_5_5_0_jar.xml
│ ├── sbt__com_typesafe_scala_logging_scala_logging_2_12_3_9_2_jar.xml
│ ├── sbt__org_neo4j_neo4j_cypher_logical_plans_3_3_3_3_9_jar.xml
│ ├── sbt__com_fasterxml_jackson_core_jackson_annotations_2_9_8_jar.xml
│ ├── sbt__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_8_jar.xml
│ ├── sbt__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_8_jar.xml
│ ├── sbt__com_googlecode_concurrentlinkedhashmap_concurrentlinkedhashmap_lru_1_4_2_jar.xml
│ ├── sbt__com_github_workingDog_stixtoneolib_2_12_0_5_SNAPSHOT_jar.xml
│ └── sbt__org_scala_lang_scala_library_2_12_8_jar.xml
├── modules.xml
└── modules
│ ├── stixtoneodb.iml
│ └── stixtoneodb-build.iml
├── sonatype.sbt
├── logback.xml
├── changes.md
├── how-2-convert.md
├── src
└── main
│ └── scala
│ └── com
│ └── kodekutters
│ └── StixToNeoDB.scala
└── README.md
/project/build.properties:
--------------------------------------------------------------------------------
1 | sbt.version = 1.3.13
--------------------------------------------------------------------------------
/version.sbt:
--------------------------------------------------------------------------------
1 | version in ThisBuild := "6.0"
2 |
--------------------------------------------------------------------------------
/project/assembly.sbt:
--------------------------------------------------------------------------------
1 | addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.15.0")
--------------------------------------------------------------------------------
/stix-files/testfull.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/workingDog/StixToNeoDB/HEAD/stix-files/testfull.zip
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/scala_compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/project/plugins.sbt:
--------------------------------------------------------------------------------
1 | import sbt.Resolver
2 |
3 | resolvers += Resolver.sonatypeRepo("public")
4 |
5 | resolvers += Resolver.sonatypeRepo("snapshots")
6 |
7 | resolvers += Resolver.sonatypeRepo("releases")
8 |
9 | addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.11")
10 |
11 | addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.1.1")
12 |
13 | addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "2.5")
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_ow2_asm_asm_5_2_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_io_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_ow2_asm_asm_tree_5_2_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_ow2_asm_asm_util_5_2_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__joda_time_joda_time_2_10_1_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__net_sf_opencsv_opencsv_2_3_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_csv_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_jmx_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_ssl_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_udc_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_slf4j_slf4j_api_1_7_26_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_slf4j_slf4j_nop_1_7_26_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_dbms_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_index_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_common_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_cypher_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_kernel_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_unsafe_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_values_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_ow2_asm_asm_analysis_5_2_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__io_netty_netty_all_4_1_21_Final_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_codegen_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_logging_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_resource_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_apache_lucene_lucene_core_5_5_0_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_graph_algo_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_apache_commons_commons_text_1_1_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_collections_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_graphdb_api_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_import_tool_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_parboiled_parboiled_core_1_1_7_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_scala_lang_scala_reflect_2_12_8_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_apache_commons_commons_lang3_3_5_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_bouncycastle_bcpkix_jdk15on_1_60_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_bouncycastle_bcprov_jdk15on_1_60_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_command_line_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_lucene_index_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_apache_lucene_lucene_codecs_5_5_0_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__com_typesafe_play_play_json_2_12_2_7_3_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_configuration_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_cypher_ir_3_2_3_2_13_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_cypher_ir_3_3_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_typelevel_macro_compat_2_12_1_1_1_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_graph_matching_3_1_6_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_lucene_upgrade_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__com_github_ben_manes_caffeine_caffeine_2_3_3_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__com_github_workingDog_scalastix_2_12_1_0_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_apache_commons_commons_compress_1_12_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_consistency_check_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_parboiled_parboiled_scala_2_11_1_1_7_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__com_fasterxml_jackson_core_jackson_core_2_9_8_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_apache_lucene_lucene_queryparser_5_5_0_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__com_typesafe_play_play_functional_2_12_2_7_3_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_cypher_compiler_3_1_3_1_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_cypher_compiler_3_3_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_cypher_frontend_3_1_3_1_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_cypher_frontend_3_3_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_cypher_compiler_2_3_2_3_12_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_cypher_compiler_3_2_3_2_13_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_cypher_frontend_2_3_2_3_12_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_cypher_frontend_3_2_3_2_13_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_primitive_collections_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__com_fasterxml_jackson_core_jackson_databind_2_9_8_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_apache_lucene_lucene_backward_codecs_5_5_0_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_apache_lucene_lucene_analyzers_common_5_5_0_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__com_typesafe_scala_logging_scala_logging_2_12_3_9_2_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_neo4j_neo4j_cypher_logical_plans_3_3_3_3_9_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__com_fasterxml_jackson_core_jackson_annotations_2_9_8_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_8_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_8_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__com_googlecode_concurrentlinkedhashmap_concurrentlinkedhashmap_lru_1_4_2_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__com_github_workingDog_stixtoneolib_2_12_0_5_SNAPSHOT_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/sonatype.sbt:
--------------------------------------------------------------------------------
1 |
2 | pomExtra := {
3 |
4 | https://github.com/workingDog/StixToNeoDB
5 | scm:git:git@github.com:workingDog/StixToNeoDB.git
6 |
7 |
8 |
9 | workingDog
10 | Ringo Wathelet
11 | https://github.com/workingDog
12 |
13 |
14 | }
15 |
16 | pomIncludeRepository := { _ => false }
17 |
18 | publishMavenStyle := true
19 |
20 | publishArtifact in Test := false
21 |
22 | publishTo := Some(
23 | if (isSnapshot.value)
24 | Opts.resolver.sonatypeSnapshots
25 | else
26 | Opts.resolver.sonatypeStaging
27 | )
28 |
29 | sonatypeProfileName := "com.github.workingDog"
30 | releasePublishArtifactsAction := PgpKeys.publishSigned.value
31 | releaseTagName := (version in ThisBuild).value
32 |
33 | credentials += Credentials(Path.userHome / ".ivy2" / ".my-credentials")
34 |
35 |
--------------------------------------------------------------------------------
/logback.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
5 |
6 |
7 |
8 |
9 |
10 | application.log
11 |
12 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
13 |
14 | false
15 |
16 |
17 |
18 |
19 | %coloredLevel %logger{15} - %message%n%xException{10}
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/.idea/libraries/sbt__org_scala_lang_scala_library_2_12_8_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/changes.md:
--------------------------------------------------------------------------------
1 | Change Log
2 | ==========
3 |
4 | ### changes in "7.0-SNAPSHOT"
5 |
6 |
7 | ### changes in "6.0"
8 |
9 | * update to scala 2.13.3
10 | * update to "stixtoneolib-0.6" which uses "scalastix-1.1" all using scala 2.13.3
11 |
12 | ### changes in 5.0
13 |
14 | * update to "stixtoneolib-0.5" which uses "scalastix-1.0"
15 |
16 | ---> no longer providing a ready to use jar file.
17 | Use "sbt assembly" to generate a self contained jar file "stixtoneo-5.0.jar".
18 |
19 | ### changes in 4.0
20 |
21 | * update scala, sbt and stixtoneolib
22 |
23 | ### changes in 3.0
24 |
25 | * update stixtoneolib to 0.3 version
26 |
27 | ### changes in 2.0
28 |
29 | * use stixtoneolib-0.2 library for processing
30 | * change the usage options with:
31 | *** -f for file of json format, catering for both text and zip files
32 | *** -x for the large files, catering for both text and zip files
33 |
34 | ### changes in 1.0
35 |
36 | * remove all circe dependencies
37 | * add Play json dependency
38 | * replace all circe code with Play json code
39 | * added counting the nodes
40 | * added custom properties
41 | * added the missing hashes of ExternalReference
42 | * remove description from ObservablesMaker
43 | * added custom (for custom properties x_...) to ObservablesMaker
44 | * update to scalastix-0.7, for STIX-2.0 specs
45 | * due to STIX-2.0 specs,
46 | ** modify object_refs as optional for Report
47 | ** comment out the lang and confidence parameters.
48 |
49 | * updated scala, sbt, plugins
--------------------------------------------------------------------------------
/how-2-convert.md:
--------------------------------------------------------------------------------
1 | ## To convert Stix-2.0 objects to graphML, Cypher statements, CSV and binary.
2 |
3 | Download [neo4j-3.2.1](https://neo4j.com/download/other-releases/) from the zip or tar file,
4 | not the exe or dmg.
5 |
6 | Untar/unzip it into a directory of your choice, let say, "myneo4j"
7 |
8 | Setup the tools required for exporting to other formats, go to [neo4j-shell-tools](https://github.com/jexp/neo4j-shell-tools)
9 | and download the "neo4j-shell-tools_3.0.1.zip" file.
10 |
11 | Unzip neo4j-shell-tools.zip and copy the 4 jar files into your "myneo4j/lib" directory.
12 |
13 | Setup your path variables,
14 |
15 | e.g. macOS
16 |
17 | export NEO4J_HOME=/Users/yourname/myneo4j/neo4j-community-3.2.1
18 | export PATH=$PATH:$NEO4J_HOME/bin:$NEO4J_HOME/lib
19 |
20 | This makes the [neo4j-shell-tools](https://github.com/jexp/neo4j-shell-tools) available.
21 |
22 | Now generate a neo4j graph database from your Stix objects file using [StixToNeoDB](https://github.com/workingDog/StixToNeoDB)
23 |
24 | java -jar stixtoneodb-6.0.jar --json stix_file.json stixdb
25 |
26 | This will produce a neo4j database in the "stixdb" directory.
27 |
28 | After that, in a terminal type:
29 |
30 | neo4j-shell -path /path_to.../stixdb
31 |
32 | Then for example exporting to graphML format, type at the shell prompt:
33 |
34 | $ export-graphml -o out.graphml
35 |
36 | This will give you all your data in graphML format, you can then open "out.graphml" using Gephi.
37 |
38 | Other [export commands](https://github.com/jexp/neo4j-shell-tools#export) are available,
39 |
40 | To export your data as Cypher statements, use the Cypher Export command.
41 | To export your data as CSV, use the Cypher Import command with the -o file option which will output the results of your queries into a CSV file.
42 | To export your data as GraphML, use the GraphML Export command.
43 | To export your data as a binary file, use the Export Binary command.
44 |
--------------------------------------------------------------------------------
/src/main/scala/com/kodekutters/StixToNeoDB.scala:
--------------------------------------------------------------------------------
1 | package com.kodekutters
2 |
3 | import com.kodekutters.neo4j.Neo4jFileLoader
4 | import java.io.File
5 |
6 | import com.typesafe.scalalogging.Logger
7 | import org.slf4j.helpers.NOPLogger
8 |
9 | import scala.language.implicitConversions
10 | import scala.language.postfixOps
11 |
12 | /**
13 | * loads a file containing STIX-2 objects (in json format), or
14 | * a zip file of such, into a Neo4j graph database
15 | *
16 | * @author R. Wathelet June 2017, revised December 2017
17 | *
18 | */
19 | object StixToNeoDB {
20 |
21 | val usage =
22 | """Usage:
23 | java -jar stixtoneodb-6.0.jar -f hostAddress stix_file db_dir
24 | or
25 | java -jar stixtoneodb-6.0.jar -x hostAddress stix_file db_dir""".stripMargin
26 |
27 | /**
28 | * loads a file containing STIX-2 objects, or
29 | * a zip file containing one or more such entry files,
30 | * into a neo4j graph database
31 | */
32 | def main(args: Array[String]) {
33 | if (args.length < 3)
34 | println(usage)
35 | else {
36 | // to log the progress, comment this line if you don't want any logging at all
37 | implicit val logger = Logger("StixToNeoDB")
38 | // the Neo4j hostname
39 | val hostAddress = args(1).trim
40 | // the input file
41 | val infile = new File(args(2))
42 | // the Neo4j db directory
43 | val dbDir = if (args.length == 4) args(3).trim else ""
44 | // if nothing default is to create a new db in
45 | // the current directory with name stixdb
46 | val dbFile = if (dbDir.isEmpty) new java.io.File(".").getCanonicalPath + "/stixdb" else dbDir
47 | // Neo4jLoader and Neo4jFileLoader can take an implicit logger, default NOPLogger
48 | val neoLoader = new Neo4jFileLoader(dbFile, hostAddress)
49 | args(0) match {
50 | case "-f" =>
51 | if (infile.getName.endsWith(".zip")) neoLoader.loadBundleZipFile(infile)
52 | else neoLoader.loadBundleFile(infile)
53 | case "-x" =>
54 | if (infile.getName.endsWith(".zip")) neoLoader.loadLargeZipTextFile(infile)
55 | else neoLoader.loadLargeTextFile(infile)
56 | case x => println("unknown option: " + x + "\n" + usage)
57 | }
58 | }
59 | }
60 |
61 | }
62 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Loads STIX-2 to a Neo4j graph database
2 |
3 | This command prompt application **StixToNeoDB**, loads [STIX-2](https://oasis-open.github.io/cti-documentation/)
4 | objects and relations from json and zip files into a [Neo4j](https://neo4j.com/) graph database.
5 |
6 | The [OASIS](https://www.oasis-open.org/) open standard Structured Threat Information Expression [STIX-2](https://oasis-open.github.io/cti-documentation/)
7 | is a language for expressing cyber threat and observable information.
8 |
9 | [Neo4j](https://neo4j.com/) "is a highly scalable native graph database that leverages data
10 | relationships as first-class entities, helping enterprises build intelligent applications
11 | to meet today’s evolving data challenges."
12 | In essence, a graph database and processing engine that is used here for storing Stix objects
13 | and their relationships.
14 |
15 | **StixToNeoDB** converts files of [STIX-2](https://oasis-open.github.io/cti-documentation/)
16 | domain objects (SDO) and relationships (SRO) to [Neo4j](https://neo4j.com/) nodes and relations
17 | using the [Java Neo4j API](https://neo4j.com/docs/java-reference/current/javadocs/).
18 | This allows for creating a new database or for adding new nodes and relations to
19 | an existing Neo4j graph database. The file types include files containing
20 | STIX-2 bundles in JSON format and zip files.
21 |
22 | ### Tools
23 |
24 | Once the Stix objects are in a Neo4j graph database you can use the built-in tools to visualise and
25 | analyse the data. Other tools such as the [Tinkerpop](http://tinkerpop.apache.org/) framework and [Spark GraphX](https://spark.apache.org/graphx/)
26 | can easily link to the neo4j data for very large data sets processing.
27 | You can also use these [export tools](https://github.com/jexp/neo4j-shell-tools) to export the data into GraphML, Cypher statements, CSV and binary formats. See also
28 | [how-2-convert](how-2-convert.md) for some explanations on how to convert Stix objects into those formats.
29 |
30 | ### Installation and usage
31 |
32 | Ensure you have Java 11 installed and the latest [SBT](http://www.scala-sbt.org/) on your system.
33 | Clone or download the **StixToNeoDB** files from this repository.
34 |
35 | ### Usage
36 |
37 | #### Preferred method using SBT
38 |
39 | In the StixToNeoDB directory type:
40 |
41 | sbt "run -f localhost:7687 stix_file db_dir"
42 |
43 | This will compile and run **StixToNeoDB** with the given parameters.
44 | See below for the parameters description.
45 |
46 | #### Making a large java **jar** file
47 |
48 | If you really need a single java file to run **StixToNeoDB**, then first
49 | compile from source code and assemble the application and all its dependencies
50 | into a single fat **jar** file. Use [SBT](http://www.scala-sbt.org/) and type:
51 |
52 | sbt assembly
53 |
54 | This will produce *stixtoneodb-6.0.jar* in the *./target/scala-2.13* directory
55 | that you can use to load Stix objects into a Neo4j.
56 |
57 | To load your Stix objects data into a Neo4j graph database, type at the prompt where
58 | you have put the *stixtoneodb-6.0.jar*:
59 |
60 | java -jar stixtoneodb-6.0.jar -f hostAddress stix_file db_dir
61 | or
62 | java -jar stixtoneodb-6.0.jar -x hostAddress stix_file db_dir
63 |
64 | #### Parameters
65 |
66 | **hostAddress** is of the form **localhost:7687** and specifies the address
67 | of the local database service to listen to.
68 |
69 | With the option **-f** the input file *stix_file* must be a file containing the Stix objects data that you want to convert,
70 | and *db_dir* is the location path to the Neo4j database directory.
71 | The input file can be a text file containing a single bundle in json format or a zip file containing one or more
72 | bundle files (.zip). Only *.json* and *.stix* files in the zip file are processed.
73 |
74 | If *db_dir* is absent, the default output directory will be in the current directory with the name *stixdb*.
75 | If the database already exists, the data will be added to it, otherwise a new neo4j database will be created.
76 | An existing database must not be "opened" by another process during processing.
77 |
78 | The **-x** option is for the **experimental** processing of large file one line at a time.
79 | The input file must contain a Stix object on one line
80 | ending with a new line. Similarly, if the input file is a zip file, each zip file entry must
81 | contain Stix objects on one line ending with a new line.
82 |
83 | Note that **StixToNeoDB** will try to "skip" errors in the objects and relations of the input file,
84 | e.g. references to non-existent objects. The log of the processing can be found in *application.log*
85 | in the *logs* directory.
86 |
87 | To view the data in Neo4j, launch the Neo4j Community Edition server,
88 | then open a browser on *http://localhost:7474*, select your *db_dir* as the database to view.
89 |
90 | ### Dependencies and requirements
91 |
92 | Requires Java 11 or greater.
93 |
94 | Depends on [StixToNeoLib](https://github.com/workingDog/StixToNeoLib) which depends on
95 | [ScalaStix](https://github.com/workingDog/scalastix), and
96 | the associated [Neo4j Community 3.3.9](https://mvnrepository.com/artifact/org.neo4j/neo4j) jar file.
97 |
98 | Since **StixToNeoDB** relies on the **neo4j-3.3.9** jar file, use
99 | Neo4j Community (3.5.19) server with the **dbms.allow_upgrade=true** in
100 | the **neo4j.conf** to process the results.
101 |
102 | ### References
103 |
104 | 1) [Neo4j](https://neo4j.com/)
105 |
106 | 2) [Java Neo4j API](https://neo4j.com/docs/java-reference/current/javadocs/)
107 |
108 | 3) [ScalaStix](https://github.com/workingDog/scalastix)
109 |
110 | 4) [StixToNeoLib](https://github.com/workingDog/StixToNeoLib)
111 |
112 | 5) [STIX-2](https://oasis-open.github.io/cti-documentation/)
113 |
114 |
115 | ### Status
116 |
117 | work in progress
118 |
119 |
--------------------------------------------------------------------------------
/.idea/modules/stixtoneodb.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
--------------------------------------------------------------------------------
/.idea/modules/stixtoneodb-build.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
--------------------------------------------------------------------------------