|
117 | 117 | "all_ent = \"all_entities.json\"\n",
|
118 | 118 | "all_rel = \"all_relationships.json\"\n",
|
119 | 119 | "prov_file = \"provenance_entities.json\" # this will only be used if you want to backup provenance records\n",
|
120 |
| - "servicedef = 'service_definition.json'" |
| 120 | + "servicedef = \"service_definition.json\"" |
121 | 121 | ]
|
122 | 122 | },
|
123 | 123 | {
|
|
158 | 158 | },
|
159 | 159 | {
|
160 | 160 | "cell_type": "markdown",
|
161 |
| - "id": "423cbfe2", |
| 161 | + "id": "da690f5c", |
162 | 162 | "metadata": {},
|
163 | 163 | "source": [
|
164 | 164 | "Get the service definition for the knowledge graph service and save it to the service definition file"
|
|
167 | 167 | {
|
168 | 168 | "cell_type": "code",
|
169 | 169 | "execution_count": null,
|
170 |
| - "id": "b24f732f", |
| 170 | + "id": "952e670f", |
171 | 171 | "metadata": {},
|
172 | 172 | "outputs": [],
|
173 | 173 | "source": [
|
|
177 | 177 | " \"username\": \"myUsername\",\n",
|
178 | 178 | " \"password\": \"myPassword\",\n",
|
179 | 179 | " \"referer\": \"https://myportal.com/portal\",\n",
|
180 |
| - " \"f\": \"json\"\n", |
| 180 | + " \"f\": \"json\",\n", |
181 | 181 | "}\n",
|
182 | 182 | "token_response = requests.post(token_url, data=creds, verify=False)\n",
|
183 |
| - "sd_data = requests.get(url=kg_url, params={'f': 'json', 'token': token_response.json()['token']}, verify=False)\n", |
184 |
| - "with open(os.path.join(output_folder, servicedef), 'w') as f:\n", |
| 183 | + "sd_data = requests.get(\n", |
| 184 | + " url=\"https://myportal.com/server/rest/services/Hosted/myknowledgegraph/KnowledgeGraphServer\",\n", |
| 185 | + " params={\"f\": \"json\", \"token\": token_response.json()[\"token\"]},\n", |
| 186 | + " verify=False,\n", |
| 187 | + ")\n", |
| 188 | + "with open(os.path.join(output_folder, servicedef), \"w\") as f:\n", |
185 | 189 | " json.dump(sd_data.text, f)"
|
186 | 190 | ]
|
187 | 191 | },
|
|
282 | 286 | "outputs": [],
|
283 | 287 | "source": [
|
284 | 288 | "# query for all entities in graph\n",
|
285 |
| - "original_entities = knowledgegraph_backup.query_streaming(\n", |
286 |
| - " \"MATCH (n) RETURN distinct n\"\n", |
287 |
| - ")" |
| 289 | + "original_entities = knowledgegraph_backup.query_streaming(\"MATCH (n) RETURN distinct n\")" |
288 | 290 | ]
|
289 | 291 | },
|
290 | 292 | {
|
|
304 | 306 | " if type(curr_entity[\"_properties\"][prop]) == UUID:\n",
|
305 | 307 | " curr_entity[\"_properties\"][prop] = str(curr_entity[\"_properties\"][prop])\n",
|
306 | 308 | " # delete objectid, the server will handle creating new ones when we load the backup\n",
|
307 |
| - " del curr_entity[\"_properties\"][\n", |
308 |
| - " \"objectid\"\n", |
309 |
| - " ]\n", |
| 309 | + " del curr_entity[\"_properties\"][\"objectid\"]\n", |
310 | 310 | " all_entities_fromquery.append(curr_entity)"
|
311 | 311 | ]
|
312 | 312 | },
|
|
367 | 367 | " curr_relationship[\"_properties\"][prop]\n",
|
368 | 368 | " )\n",
|
369 | 369 | " # delete objectid, the server will handle creating new ones when we load the backup\n",
|
370 |
| - " del curr_relationship[\"_properties\"][\n", |
371 |
| - " \"objectid\"\n", |
372 |
| - " ]\n", |
| 370 | + " del curr_relationship[\"_properties\"][\"objectid\"]\n", |
373 | 371 | " all_relationships_fromquery.append(curr_relationship)"
|
374 | 372 | ]
|
375 | 373 | },
|
|
397 | 395 | {
|
398 | 396 | "cell_type": "code",
|
399 | 397 | "execution_count": null,
|
400 |
| - "id": "d4db5b47", |
| 398 | + "id": "9f237840", |
401 | 399 | "metadata": {},
|
402 | 400 | "outputs": [],
|
403 | 401 | "source": [
|
404 | 402 | "# write provenance information to the provenance data model file\n",
|
405 |
| - "prov_structure = knowledgegraph_backup.datamodel['meta_entity_types']['Provenance']\n", |
406 |
| - "with open(os.path.join(output_folder, dm_prov), 'w') as f:\n", |
| 403 | + "prov_structure = knowledgegraph_backup.datamodel[\"meta_entity_types\"][\"Provenance\"]\n", |
| 404 | + "with open(os.path.join(output_folder, dm_prov), \"w\") as f:\n", |
407 | 405 | " json.dump(prov_structure, f)"
|
408 | 406 | ]
|
409 | 407 | },
|
|
439 | 437 | " curr_provenance[\"_properties\"][prop]\n",
|
440 | 438 | " )\n",
|
441 | 439 | " # delete objectid, the server will handle creating new ones when we load the backup\n",
|
442 |
| - " del curr_provenance[\"_properties\"][\n", |
443 |
| - " \"objectid\"\n", |
444 |
| - " ]\n", |
| 440 | + " del curr_provenance[\"_properties\"][\"objectid\"]\n", |
445 | 441 | " all_provenance_fromquery.append(curr_provenance)"
|
446 | 442 | ]
|
447 | 443 | },
|
|
468 | 464 | {
|
469 | 465 | "cell_type": "code",
|
470 | 466 | "execution_count": null,
|
471 |
| - "id": "0b62742e", |
| 467 | + "id": "fa7d1671", |
472 | 468 | "metadata": {},
|
473 | 469 | "outputs": [],
|
474 | 470 | "source": [
|
|
538 | 534 | "outputs": [],
|
539 | 535 | "source": [
|
540 | 536 | "# connect to portal via GIS\n",
|
541 |
| - "gis_load = GIS(\n", |
542 |
| - " \"https://myportal.com/portal\", \"username\", \"password\"\n", |
543 |
| - ")\n", |
| 537 | + "gis_load = GIS(\"https://myportal.com/portal\", \"username\", \"password\")\n", |
544 | 538 | "\n",
|
545 |
| - "with open(os.path.join(output_folder, servicedef), 'r') as file:\n", |
| 539 | + "with open(os.path.join(output_folder, servicedef), \"r\") as file:\n", |
546 | 540 | " service_def = json.load(file)\n",
|
547 | 541 | "service_def = json.loads(service_def)\n",
|
548 | 542 | "updated_service_def = {\n",
|
549 |
| - " 'name': \"myNewKnowledgeGraph\", #replace with the name for your new knowledge graph\n", |
550 |
| - " 'capabilities': service_def['capabilities'],\n", |
551 |
| - " 'jsonProperties': {\n", |
552 |
| - " 'allowGeometryUpdates': service_def['allowGeometryUpdates'],\n", |
553 |
| - " 'searchMaxRecordCount': service_def['searchMaxRecordCount'],\n", |
554 |
| - " 'spatialReference': service_def['spatialReference'],\n", |
555 |
| - " 'maxRecordCount': service_def['maxRecordCount'],\n", |
556 |
| - " 'description': service_def['description'],\n", |
557 |
| - " 'copyrightText': service_def['copyrightText'],\n", |
558 |
| - " 'documentEntityTypeInfo': {\n", |
| 543 | + " \"name\": \"myNewKnowledgeGraph\", # replace with the name for your new knowledge graph\n", |
| 544 | + " \"capabilities\": service_def[\"capabilities\"],\n", |
| 545 | + " \"jsonProperties\": {\n", |
| 546 | + " \"allowGeometryUpdates\": service_def[\"allowGeometryUpdates\"],\n", |
| 547 | + " \"searchMaxRecordCount\": service_def[\"searchMaxRecordCount\"],\n", |
| 548 | + " \"spatialReference\": service_def[\"spatialReference\"],\n", |
| 549 | + " \"maxRecordCount\": service_def[\"maxRecordCount\"],\n", |
| 550 | + " \"description\": service_def[\"description\"],\n", |
| 551 | + " \"copyrightText\": service_def[\"copyrightText\"],\n", |
| 552 | + " \"documentEntityTypeInfo\": {\n", |
559 | 553 | " \"documentEntityTypeName\": doc_type_name,\n",
|
560 |
| - " \"hasDocumentsRelationshipTypeName\": doc_rel_type_name\n", |
| 554 | + " \"hasDocumentsRelationshipTypeName\": doc_rel_type_name,\n", |
561 | 555 | " },\n",
|
562 |
| - " 'supportsDocuments': service_def['supportsDocuments'],\n", |
563 |
| - " 'supportsSearch': service_def['supportsSearch'],\n", |
564 |
| - " 'supportsProvenance': service_def['supportsProvenance']\n", |
565 |
| - " }\n", |
| 556 | + " \"supportsDocuments\": service_def[\"supportsDocuments\"],\n", |
| 557 | + " \"supportsSearch\": service_def[\"supportsSearch\"],\n", |
| 558 | + " \"supportsProvenance\": service_def[\"supportsProvenance\"],\n", |
| 559 | + " },\n", |
566 | 560 | "}\n",
|
567 | 561 | "\n",
|
568 |
| - "result = gis_copyto.content.create_service(name=\"\",service_type=\"KnowledgeGraph\",create_params=updated_service_def)\n", |
| 562 | + "result = gis_copyto.content.create_service(\n", |
| 563 | + " name=\"\", service_type=\"KnowledgeGraph\", create_params=updated_service_def\n", |
| 564 | + ")\n", |
569 | 565 | "\n",
|
570 | 566 | "knowledgegraph_load = KnowledgeGraph(result.url, gis=gis_load)"
|
571 | 567 | ]
|
|
843 | 839 | " prop_list = []\n",
|
844 | 840 | " for prop in load_dm[\"relationship_types\"][relationship_type][\"properties\"]:\n",
|
845 | 841 | " if (\n",
|
846 |
| - " load_dm[\"relationship_types\"][relationship_type][\"properties\"][prop][\"fieldType\"]\n", |
| 842 | + " load_dm[\"relationship_types\"][relationship_type][\"properties\"][prop][\n", |
| 843 | + " \"fieldType\"\n", |
| 844 | + " ]\n", |
847 | 845 | " == \"esriFieldTypeString\"\n",
|
848 | 846 | " ):\n",
|
849 | 847 | " prop_list.append(prop)\n",
|
|
863 | 861 | },
|
864 | 862 | {
|
865 | 863 | "cell_type": "markdown",
|
866 |
| - "id": "9bce8d5b", |
| 864 | + "id": "8a6a5ca5", |
867 | 865 | "metadata": {},
|
868 | 866 | "source": [
|
869 | 867 | "### Add additional provenance entity type properties\n",
|
|
873 | 871 | {
|
874 | 872 | "cell_type": "code",
|
875 | 873 | "execution_count": null,
|
876 |
| - "id": "e3563b59", |
| 874 | + "id": "e663e9fd", |
877 | 875 | "metadata": {},
|
878 | 876 | "outputs": [],
|
879 | 877 | "source": [
|
880 |
| - "with open(os.path.join(file_loc, dm_prov), 'r') as file:\n", |
881 |
| - " prov_dm = json.load(file)\n", |
| 878 | + "with open(os.path.join(file_loc, dm_prov), \"r\") as file:\n", |
| 879 | + " prov_dm = json.load(file)\n", |
882 | 880 | "\n",
|
883 | 881 | "prop_list = []\n",
|
884 |
| - "for prop in prov_dm['properties']:\n", |
885 |
| - " prop_list.append(prov_dm['properties'][prop])\n", |
| 882 | + "for prop in prov_dm[\"properties\"]:\n", |
| 883 | + " prop_list.append(prov_dm[\"properties\"][prop])\n", |
886 | 884 | "knowledgegraph_load.graph_property_adds(\n",
|
887 |
| - " type_name=\"Provenance\",\n", |
888 |
| - " graph_properties=prop_list\n", |
| 885 | + " type_name=\"Provenance\", graph_properties=prop_list\n", |
889 | 886 | ")\n",
|
890 | 887 | "# errors about already existing properties are expected"
|
891 | 888 | ]
|
|
0 commit comments