{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "honest-owner",
"metadata": {},
"outputs": [],
"source": [
"!kgtk cat -i ../../gdrive-kgtk-dump-2020-12-07/claims.tsv.gz \\\n",
" ../../data/removed_statements.tsv \\\n",
" -o ../../data/claims.w_removed_statements.tsv"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "juvenile-ability",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "51f315ee082443c0910cd6f1584aafcc",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/1225987894 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"IOPub message rate exceeded.\n",
"The notebook server will temporarily stop sending output\n",
"to the client in order to avoid crashing it.\n",
"To change this limit, set the config variable\n",
"`--NotebookApp.iopub_msg_rate_limit`.\n",
"\n",
"Current values:\n",
"NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n",
"NotebookApp.rate_limit_window=3.0 (secs)\n",
"\n"
]
}
],
"source": [
"import gzip\n",
"from tqdm.notebook import tqdm\n",
"propFileDict = {}\n",
"fileLineCount = 1225987894\n",
"with open('../../data/claims.w_removed_statements.tsv','r') as fin: \n",
" headerLine = next(fin)\n",
"# tstCount = 0\n",
" for line in tqdm(fin, total = fileLineCount):\n",
" lineP = line.rstrip().split(\"\\t\")\n",
" if \"external-id\" in lineP[-1]:\n",
" continue\n",
" prop = lineP[2]\n",
"# print('got line', lineP)\n",
" if prop not in propFileDict:\n",
" propFileDict[prop] = open(\"../../propertiesSplitWRemovedWRemoved/claims.\"+str(prop)+\".tsv\",\"w\")\n",
" propFileDict[prop].write(headerLine)\n",
" propFileDict[prop].write(line)\n",
"# tstCount += 1\n",
"# if tstCount == 10:\n",
"# break\n",
" for file1 in propFileDict.values():\n",
" file1.close()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "knowing-bryan",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[2021-03-12 19:33:50 sqlstore]: IMPORT graph directly into table graph_11 from /data/wd-correctness/propertiesSplit/claims.P996.tsv ...\n",
"[2021-03-12 19:33:51 sqlstore]: IMPORT graph directly into table graph_12 from /data/wd-correctness/wikidata-20210215/derived.isastar.tsv.gz ...\n",
"^C\n"
]
}
],
"source": [
"!kgtk --debug query -i ../../propertiesSplitWRemoved/claims.P996.tsv \\\n",
" ../../constraintsOP/typeConstraint/claims.type-constraints_all.tsv \\\n",
" ../../wikidata-20210215/derived.isastar.tsv.gz \\\n",
" --match \"m: (node1)-[nodeProp]->(node2), c: (rLabel)-[:P2308]->(parent), d: (node1)-[]->(par), c: (eLabel)-[:P2303]->(eNode)\" \\\n",
" --where 'nodeProp.label = rLabel and (par = parent or (rLabel = eLabel and node1 = eNode))' \\\n",
" --return 'nodeProp.id, node1, nodeProp.label, node2, max(parent) as `node1;ancestor`' \\\n",
" -o ../../constraintsOP/typeConstraint/claims.type-constraints.mandatory.instanceOf.P996.correct.tsv \\\n",
" --graph-cache ~/sqlite3_caches/mandConst001.sqlite3.db ; \\\n",
" kgtk --debug ifnotexists -i ../../constraintsOP/typeConstraint/claims.type-constraints.mandatory.instanceOf.P996.all.tsv \\\n",
" --filter-on ../../constraintsOP/typeConstraint/claims.type-constraints.mandatory.instanceOf.P996.correct.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \\\n",
" -o ../../constraintsOP/typeConstraint/claims.type-constraints.mandatory.instanceOf.P996.incorrect.tsv"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "abstract-retreat",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[2021-03-12 22:33:26 query]: SQL Translation:\r\n",
"---------------------------------------------\r\n",
" SELECT graph_11_c1.\"id\", graph_11_c1.\"node1\", graph_11_c1.\"label\", graph_11_c1.\"node2\"\r\n",
" FROM graph_11 AS graph_11_c1, graph_14 AS graph_14_c2\r\n",
" WHERE graph_11_c1.\"node1\"=graph_14_c2.\"node1\"\r\n",
" AND (graph_14_c2.\"node2\" IN (?, ?, ?))\r\n",
" PARAS: ['Q1238720', 'Q3331189', 'Q47461344']\r\n",
"---------------------------------------------\r\n"
]
}
],
"source": [
"!kgtk --debug query -i ../../propertiesSplitWRemoved/claims.P996.tsv \\\n",
" ../../wikidata-20210215/derived.isastar.tsv.gz \\\n",
" --match \"m: (node1)-[nodeProp]->(node2), d: (node1)-[]->(par)\" \\\n",
" --where 'par in [\"Q1238720\",\"Q3331189\",\"Q47461344\"]' \\\n",
" --return 'nodeProp.id, node1, nodeProp.label, node2' \\\n",
" -o ../../constraintsOP/typeConstraint/claims.type-constraints.mandatory.instanceOf.P996.correct.tsv \\\n",
" --graph-cache ~/sqlite3_caches/mandConst001.sqlite3.db ; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.P996.tsv \\\n",
" --filter-on ../../constraintsOP/typeConstraint/claims.type-constraints.mandatory.instanceOf.P996.correct.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \\\n",
" -o ../../constraintsOP/typeConstraint/claims.type-constraints.mandatory.instanceOf.P996.incorrect.tsv"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "strange-truck",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"81289 ../../constraintsOP/typeConstraint/claims.type-constraints.mandatory.instanceOf.P996.correct.tsv\r\n"
]
}
],
"source": [
"!wc -l ../../constraintsOP/typeConstraint/claims.type-constraints.mandatory.instanceOf.P996.correct.tsv"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "finnish-hampton",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[2021-03-12 22:49:54 sqlstore]: IMPORT graph directly into table graph_15 from /data/wd-correctness/propertiesSplit/claims.P991.tsv ...\n",
"[2021-03-12 22:49:54 query]: SQL Translation:\n",
"---------------------------------------------\n",
" SELECT graph_15_c1.\"id\", graph_15_c1.\"node1\", graph_15_c1.\"label\", graph_15_c1.\"node2\"\n",
" FROM graph_15 AS graph_15_c1, graph_5 AS graph_5_c2\n",
" WHERE graph_15_c1.\"node1\"=graph_5_c2.\"node1\"\n",
" AND (graph_5_c2.\"node2\" IN (?))\n",
" PARAS: ['Q40231']\n",
"---------------------------------------------\n",
"[2021-03-12 22:49:55 sqlstore]: CREATE INDEX on table graph_15 column node1 ...\n",
"[2021-03-12 22:49:55 sqlstore]: ANALYZE INDEX on table graph_15 column node1 ...\n"
]
}
],
"source": [
"!kgtk --debug query -i ../../propertiesSplitWRemoved/claims.P991.tsv \\\n",
" ../../wikidata-20210215/derived.P31P279star.tsv.gz \\\n",
" --match \"m: (node1)-[nodeProp]->(node2), d: (node1)-[]->(par)\" \\\n",
" --where 'par in [\"Q40231\"]' \\\n",
" --return 'nodeProp.id, node1, nodeProp.label, node2' \\\n",
" -o ../../constraintsOP/typeConstraint/claims.type-constraints.mandatory.instanceOf.P991.correct.tsv \\\n",
" --graph-cache ~/sqlite3_caches/mandConst001.sqlite3.db ; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.P991.tsv \\\n",
" --filter-on ../../constraintsOP/typeConstraint/claims.type-constraints.mandatory.instanceOf.P991.correct.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \\\n",
" -o ../../constraintsOP/typeConstraint/claims.type-constraints.mandatory.instanceOf.P991.incorrect.tsv"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "elegant-reverse",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[2021-03-12 23:54:56 sqlstore]: IMPORT graph directly into table graph_16 from /data/wd-correctness/propertiesSplit/claims.P965.tsv ...\n",
"[2021-03-12 23:54:56 query]: SQL Translation:\n",
"---------------------------------------------\n",
" SELECT graph_16_c1.\"id\", graph_5_c2.\"node1\", graph_16_c1.\"label\", graph_16_c1.\"node2\"\n",
" FROM graph_16 AS graph_16_c1, graph_5 AS graph_5_c2\n",
" WHERE graph_16_c1.\"node1\"=graph_5_c2.\"node1\"\n",
" AND (graph_5_c2.\"node2\" IN (?))\n",
" PARAS: ['Q6023295']\n",
"---------------------------------------------\n",
"[2021-03-12 23:54:56 sqlstore]: CREATE INDEX on table graph_16 column node1 ...\n",
"[2021-03-12 23:54:56 sqlstore]: ANALYZE INDEX on table graph_16 column node1 ...\n"
]
}
],
"source": [
"!kgtk --debug query -i ../../propertiesSplitWRemoved/claims.P965.tsv \\\n",
" ../../wikidata-20210215/derived.P31P279star.tsv.gz \\\n",
" --match \"m: (node1)-[nodeProp]->(node2), d: (node1)-[]->(par)\" \\\n",
" --where 'par in [\"Q6023295\"]' \\\n",
" --return 'nodeProp.id, node1, nodeProp.label, node2' \\\n",
" -o ../../constraintsOP/typeConstraint/claims.type-constraints.mandatory.instanceOf.P965.correct.tsv \\\n",
" --graph-cache ~/sqlite3_caches/mandConst001.sqlite3.db ; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.P965.tsv \\\n",
" --filter-on ../../constraintsOP/typeConstraint/claims.type-constraints.mandatory.instanceOf.P965.correct.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \\\n",
" -o ../../constraintsOP/typeConstraint/claims.type-constraints.mandatory.instanceOf.P965.incorrect.tsv"
]
},
{
"cell_type": "markdown",
"id": "matched-strength",
"metadata": {},
"source": [
"# Generate Queries"
]
},
{
"cell_type": "markdown",
"id": "black-insured",
"metadata": {},
"source": [
"## Type Constraint"
]
},
{
"cell_type": "markdown",
"id": "interior-humor",
"metadata": {},
"source": [
"### Understand Constraints File"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "clinical-brunei",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"df = pd.read_csv('../../constraintsOP/typeConstraint/claims.type-constraints_all.tsv',sep='\\t')"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "assured-cleaners",
"metadata": {},
"outputs": [],
"source": [
"df1 = df.groupby(['node1','label']).node2.apply(lambda p: p.tolist()).reset_index()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "sharing-evolution",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" node1 \n",
" label \n",
" node2 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" P1001 \n",
" P2308 \n",
" [Q102496, Q105985, Q1140371, Q1151067, Q119768... \n",
" \n",
" \n",
" 1 \n",
" P1001 \n",
" P2309 \n",
" [Q30208840] \n",
" \n",
" \n",
" 2 \n",
" P1002 \n",
" P2308 \n",
" [Q630010] \n",
" \n",
" \n",
" 3 \n",
" P1002 \n",
" P2309 \n",
" [Q21514624] \n",
" \n",
" \n",
" 4 \n",
" P1004 \n",
" P2308 \n",
" [Q2221906, Q23413, Q3947, Q41176, Q88291] \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" node1 label node2\n",
"0 P1001 P2308 [Q102496, Q105985, Q1140371, Q1151067, Q119768...\n",
"1 P1001 P2309 [Q30208840]\n",
"2 P1002 P2308 [Q630010]\n",
"3 P1002 P2309 [Q21514624]\n",
"4 P1004 P2308 [Q2221906, Q23413, Q3947, Q41176, Q88291]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1.head()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "still-trail",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" node1 \n",
" label \n",
" node2 \n",
" \n",
" \n",
" \n",
" \n",
" 69 \n",
" P105 \n",
" P2308 \n",
" [Q16521] \n",
" \n",
" \n",
" 70 \n",
" P105 \n",
" P2309 \n",
" [Q21503252] \n",
" \n",
" \n",
" 71 \n",
" P105 \n",
" P2316 \n",
" [Q21502408] \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" node1 label node2\n",
"69 P105 P2308 [Q16521]\n",
"70 P105 P2309 [Q21503252]\n",
"71 P105 P2316 [Q21502408]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1[df1['node1'] == 'P105']"
]
},
{
"cell_type": "markdown",
"id": "solid-browser",
"metadata": {},
"source": [
"### Query Generator"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "bright-impossible",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8774a89ab86f413f9a434b082221d163",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/4810 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Something failed for prop: P1249\n",
"Something failed for prop: P6790\n"
]
}
],
"source": [
"from tqdm.notebook import tqdm\n",
"import os.path\n",
"import os\n",
"\n",
"cnt = 0\n",
"fCnt = 1\n",
"fOP = None\n",
"for prop in tqdm(df1.node1.unique()):\n",
" try:\n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv\")):\n",
" continue\n",
" relation = df1[(df1['node1'] == prop) & (df1['label'] == 'P2309')].node2.values[0][0]\n",
" type1 = df1[(df1['node1'] == prop) & (df1['label'] == 'P2316')].node2.values\n",
"# print(type1)\n",
"\n",
" parents = df1[(df1['node1'] == prop) & (df1['label'] == 'P2308')].node2.values[0]\n",
" exceptions = df1[(df1['node1'] == prop) & (df1['label'] == 'P2303')].node2.values\n",
" \n",
" if relation == \"Q21503252\":\n",
" parentFile = \"P31\"\n",
" parentTitle = 'instanceOf'\n",
" elif relation == \"Q21514624\":\n",
" parentFile = \"P279\"\n",
" parentTitle = 'subclass'\n",
" else:\n",
" parentFile = \"isa\"\n",
" parentTitle = 'instanceOfOrSubclass'\n",
"\n",
" if len(type1) != 0 and type1[0][0] == \"Q21502408\":\n",
" typeVal = \"mandatory\"\n",
" elif len(type1) != 0 and type1[0][0] == \"Q62026391\":\n",
" typeVal = \"suggestion\"\n",
" else:\n",
" typeVal = \"normal\"\n",
"\n",
" if len(exceptions):\n",
" exceptionPart = \"or node1 in \" + str(exceptions[0]).replace(\"'\",'\"')\n",
" else:\n",
" exceptionPart = \"\"\n",
" \n",
" folderName = 'typeConstraint_Final'\n",
" shellFileSuffix = 'typeConstraintValidator'\n",
" \n",
" if cnt % 120 == 0:\n",
" if fOP:\n",
" fOP.close()\n",
" fOP = open(\"../../propertiesSplitWRemoved/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n",
" fCnt += 1\n",
" \n",
" fOP.write(\"{ time (kgtk --debug query -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" ../../wikidata-20210215/derived.\" + parentFile + \".tsv.gz \\\n",
" ../../wikidata-20210215/derived.P279star.tsv.gz \\\n",
" --match 'm: (node1)-[nodeProp]->(node2), \" + parentFile + \": (node1)-[]->(nodex), P279star: (nodex)-[]->(par)' \\\n",
" --where 'par in \" + str(parents).replace(\"'\",'\"') + \" \" + exceptionPart + \"' \\\n",
" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct.tsv \\\n",
" --graph-cache ~/sqlite3_caches/const120_\" + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".incorrect.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/\" + shellFileSuffix + str(fCnt) + \".txt;\")\n",
"\n",
" cnt += 1\n",
" except:\n",
" print(\"Something failed for prop:\",prop)\n",
"\n",
"if fOP:\n",
" fOP.close()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "electrical-agreement",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3743"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cnt"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "outside-stupid",
"metadata": {},
"outputs": [],
"source": [
"# import os\n",
"# for i in range(1,33):\n",
"# os.system(\"screen -dm sh ../../propertiesSplitWRemoved/checkViolations/typeConstraintValidator\"+str(i)+\".sh\")\n",
" "
]
},
{
"cell_type": "markdown",
"id": "competitive-canvas",
"metadata": {},
"source": [
"### Analyze Violations"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "casual-perth",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d3adf3ce540a4ba5bff69b56a357277e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "c5d144cbeb1d49598b7a30efc4bfb7af",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/1224 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "34c629bac1a94154a5be2e239f2c36d9",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/58 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2e8cece4fc4c4bb5833818595fdd33de",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/6204 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import os\n",
"from tqdm.notebook import tqdm\n",
"\n",
"typeConstViolations = {}\n",
"\n",
"def countLines(fname):\n",
" cnt = -1\n",
" with open(fname, 'r') as f:\n",
" for line in f:\n",
" cnt += 1\n",
" return cnt\n",
"\n",
"propList = set()\n",
"\n",
"violations = {}\n",
"\n",
"for folder in tqdm(iter(['mandatory', 'suggestion', 'normal'])):\n",
" typeConstViolations[folder] = {'instanceOf': {'correct': 0, 'incorrect': 0}, 'subclass': {'correct': 0, 'incorrect': 0}, 'instanceOfOrSubclass': {'correct': 0, 'incorrect': 0},'propCount': 0}\n",
" filePath = \"../../allConstraintsAnalysisWRemoved/typeConstraint_Final/\"+folder+\"/\"\n",
" for filename in tqdm(os.listdir(filePath)):\n",
" type1 = filename.split(\".\")[2]\n",
" prop = filename.split(\".\")[3]\n",
" propList.add(prop)\n",
" correctness = filename.split(\".\")[4]\n",
" count1 = countLines(filePath+filename)\n",
" typeConstViolations[folder][type1][correctness] += count1\n",
" if prop not in violations:\n",
" violations[prop] = {'correct': 0, 'incorrect': 0, 'paths': []}\n",
" violations[prop][correctness] = count1\n",
" violations[prop]['paths'].append(filePath+filename)\n",
" if correctness == 'correct':\n",
" typeConstViolations[folder]['propCount'] += 1\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "widespread-sector",
"metadata": {},
"outputs": [],
"source": [
"# countLines(\"../../allConstraintsAnalysisWRemoved/typeConstraint/mandatory/claims.type-constraints.subclass.P534.incorrect.tsv\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "golden-affiliate",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3743 properties processed for type constraint for 551873462 statements\n"
]
}
],
"source": [
"recordCount = 0\n",
"for elem in typeConstViolations.keys():\n",
" for key1 in typeConstViolations[elem].keys():\n",
" try:\n",
" recordCount += typeConstViolations[elem][key1]['correct'] + typeConstViolations[elem][key1]['incorrect']\n",
" except:\n",
" continue\n",
"print(f\"{len(propList)} properties processed for type constraint for {recordCount} statements\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "needed-portfolio",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"typeConstDF = pd.DataFrame(violations).T"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "lesser-thomson",
"metadata": {},
"outputs": [],
"source": [
"typeConstDF['violation_ratio'] = typeConstDF.apply(lambda p: p.incorrect / (p.correct + p.incorrect), axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "flying-context",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P1370 \n",
" 7 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 0.363636 \n",
" \n",
" \n",
" P6686 \n",
" 27 \n",
" 2 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 0.068966 \n",
" \n",
" \n",
" P3785 \n",
" 4 \n",
" 3 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 0.428571 \n",
" \n",
" \n",
" P2336 \n",
" 1 \n",
" 0 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 0.000000 \n",
" \n",
" \n",
" P4602 \n",
" 2018 \n",
" 13 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 0.006401 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P1370 7 4 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P6686 27 2 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P3785 4 3 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P2336 1 0 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P4602 2018 13 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"\n",
" violation_ratio \n",
"P1370 0.363636 \n",
"P6686 0.068966 \n",
"P3785 0.428571 \n",
"P2336 0.000000 \n",
"P4602 0.006401 "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"typeConstDF.head()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "competitive-peeing",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P8894 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 1.0 \n",
" \n",
" \n",
" P4866 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 1.0 \n",
" \n",
" \n",
" P5083 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 1.0 \n",
" \n",
" \n",
" P4031 \n",
" 0 \n",
" 2 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 1.0 \n",
" \n",
" \n",
" P3855 \n",
" 0 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 1.0 \n",
" \n",
" \n",
" P1760 \n",
" 0 \n",
" 2 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 1.0 \n",
" \n",
" \n",
" P6880 \n",
" 0 \n",
" 3 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 1.0 \n",
" \n",
" \n",
" P3968 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 1.0 \n",
" \n",
" \n",
" P5086 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 1.0 \n",
" \n",
" \n",
" P4172 \n",
" 0 \n",
" 2 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 1.0 \n",
" \n",
" \n",
" P6128 \n",
" 0 \n",
" 33 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 1.0 \n",
" \n",
" \n",
" P4217 \n",
" 0 \n",
" 2 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 1.0 \n",
" \n",
" \n",
" P5633 \n",
" 0 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 1.0 \n",
" \n",
" \n",
" P5298 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 1.0 \n",
" \n",
" \n",
" P6700 \n",
" 0 \n",
" 3 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 1.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P8894 0 1 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P4866 0 1 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P5083 0 1 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P4031 0 2 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P3855 0 4 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P1760 0 2 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P6880 0 3 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P3968 0 1 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P5086 0 1 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P4172 0 2 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P6128 0 33 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P4217 0 2 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P5633 0 4 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P5298 0 1 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P6700 0 3 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"\n",
" violation_ratio \n",
"P8894 1.0 \n",
"P4866 1.0 \n",
"P5083 1.0 \n",
"P4031 1.0 \n",
"P3855 1.0 \n",
"P1760 1.0 \n",
"P6880 1.0 \n",
"P3968 1.0 \n",
"P5086 1.0 \n",
"P4172 1.0 \n",
"P6128 1.0 \n",
"P4217 1.0 \n",
"P5633 1.0 \n",
"P5298 1.0 \n",
"P6700 1.0 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"typeConstDF.sort_values(by=['violation_ratio'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "backed-corruption",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['../../allConstraintsAnalysisWRemoved/typeConstraint_Final/normal/claims.type-constraints.instanceOf.P4945.correct.tsv',\n",
" '../../allConstraintsAnalysisWRemoved/typeConstraint_Final/normal/claims.type-constraints.instanceOf.P4945.incorrect.tsv']"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(typeConstDF.loc['P4945'].paths)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "clinical-lawsuit",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 3743.000000\n",
"mean 0.367622\n",
"std 0.367966\n",
"min 0.000000\n",
"25% 0.016360\n",
"50% 0.240000\n",
"75% 0.700000\n",
"max 1.000000\n",
"Name: violation_ratio, dtype: float64"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"typeConstDF['violation_ratio'].describe()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "wanted-domestic",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Type Constraint Violation Ratios')"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"typeConstDF['violation_ratio'].plot.hist(bins=100).set_title(\"Type Constraint Violation Ratios\")"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "sufficient-hollywood",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Type Constraint Violation Ratios (<=0.05)')"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"typeConstDF[typeConstDF['violation_ratio'] <= 0.05].violation_ratio.plot.hist(bins=100).set_title(\"Type Constraint Violation Ratios (<=0.05)\")"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "minor-marshall",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"No. of constraints whose violation ratio is greater than mean :0/3743\n"
]
}
],
"source": [
"print(f\"No. of constraints whose violation ratio is greater than mean :{sum(typeConstDF['violation_ratio'] >= 5.286054)}/{len(typeConstDF)}\")"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "special-consensus",
"metadata": {},
"outputs": [],
"source": [
"# typeConstDF.sort_values(by=['incorrect'],ascending=False).head(5).paths.values"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "excited-person",
"metadata": {},
"outputs": [],
"source": [
"# !cat ../../allConstraintsAnalysisWRemoved/typeConstraint/normal/claims.type-constraints.instanceOf.P953.incorrect.tsv"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "revolutionary-violence",
"metadata": {},
"outputs": [],
"source": [
"for key1 in typeConstViolations.keys():\n",
" typeConstViolations[key1]['correct'] = typeConstViolations[key1]['instanceOf']['correct'] + typeConstViolations[key1]['subclass']['correct'] + typeConstViolations[key1]['instanceOfOrSubclass']['correct']\n",
" typeConstViolations[key1]['incorrect'] = typeConstViolations[key1]['instanceOf']['incorrect'] + typeConstViolations[key1]['subclass']['incorrect'] + typeConstViolations[key1]['instanceOfOrSubclass']['incorrect']\n",
" typeConstViolations[key1]['VR'] = typeConstViolations[key1]['incorrect'] / (typeConstViolations[key1]['correct'] + typeConstViolations[key1]['incorrect'])\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "emotional-favorite",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"{'mandatory': {'instanceOf': {'correct': 46445731, 'incorrect': 865083},\n",
" 'subclass': {'correct': 2067, 'incorrect': 70},\n",
" 'instanceOfOrSubclass': {'correct': 1735862, 'incorrect': 13873},\n",
" 'propCount': 612,\n",
" 'correct': 48183660,\n",
" 'incorrect': 879026,\n",
" 'VR': 0.017916385580683456},\n",
" 'suggestion': {'instanceOf': {'correct': 74911, 'incorrect': 24201},\n",
" 'subclass': {'correct': 0, 'incorrect': 0},\n",
" 'instanceOfOrSubclass': {'correct': 24245, 'incorrect': 3485},\n",
" 'propCount': 29,\n",
" 'correct': 99156,\n",
" 'incorrect': 27686,\n",
" 'VR': 0.21827155043282193},\n",
" 'normal': {'instanceOf': {'correct': 426732789, 'incorrect': 5965156},\n",
" 'subclass': {'correct': 108191, 'incorrect': 17963},\n",
" 'instanceOfOrSubclass': {'correct': 68863493, 'incorrect': 996342},\n",
" 'propCount': 3102,\n",
" 'correct': 495704473,\n",
" 'incorrect': 6979461,\n",
" 'VR': 0.01388439241426005}}"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"typeConstViolations"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "aggregate-impact",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" total \n",
" \n",
" \n",
" \n",
" \n",
" P2093 \n",
" 148843205 \n",
" 927027 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 0.006190 \n",
" 149770232 \n",
" \n",
" \n",
" P1476 \n",
" 44059166 \n",
" 208472 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 0.004709 \n",
" 44267638 \n",
" \n",
" \n",
" P577 \n",
" 39990807 \n",
" 165864 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 0.004130 \n",
" 40156671 \n",
" \n",
" \n",
" P1433 \n",
" 37028672 \n",
" 112955 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 0.003041 \n",
" 37141627 \n",
" \n",
" \n",
" P1215 \n",
" 33425605 \n",
" 316565 \n",
" [../../allConstraintsAnalysisWRemoved/typeCons... \n",
" 0.009382 \n",
" 33742170 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P2093 148843205 927027 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P1476 44059166 208472 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P577 39990807 165864 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P1433 37028672 112955 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"P1215 33425605 316565 [../../allConstraintsAnalysisWRemoved/typeCons... \n",
"\n",
" violation_ratio total \n",
"P2093 0.006190 149770232 \n",
"P1476 0.004709 44267638 \n",
"P577 0.004130 40156671 \n",
"P1433 0.003041 37141627 \n",
"P1215 0.009382 33742170 "
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"typeConstDF['total'] = typeConstDF['correct'] + typeConstDF['incorrect']\n",
"typeConstDF.sort_values(by=['total'],ascending=False).head()"
]
},
{
"cell_type": "markdown",
"id": "bearing-kruger",
"metadata": {},
"source": [
"### Find out time required"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "assumed-toner",
"metadata": {},
"outputs": [],
"source": [
"# from tqdm.notebook import tqdm\n",
"# import os.path\n",
"\n",
"# cnt = 0\n",
"# fCnt = 1\n",
"# for prop in tqdm(df1.node1.unique()):\n",
"# try:\n",
"# if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv\")):\n",
"# continue\n",
"# relation = df1[(df1['node1'] == prop) & (df1['label'] == 'P2309')].node2.values[0][0]\n",
"# type1 = df1[(df1['node1'] == prop) & (df1['label'] == 'P2316')].node2.values\n",
"\n",
"# parents = df1[(df1['node1'] == prop) & (df1['label'] == 'P2308')].node2.values[0]\n",
"# exceptions = df1[(df1['node1'] == prop) & (df1['label'] == 'P2303')].node2.values\n",
"\n",
"# # print(prop, relation, type1, parents, exceptions)\n",
"\n",
"# if relation == \"Q21503252\":\n",
"# parentFile = \"P31P279star\"\n",
"# parentTitle = 'instanceOf'\n",
"# elif relation == \"Q21514624\":\n",
"# parentFile = \"P279star\"\n",
"# parentTitle = 'subclass'\n",
"# else:\n",
"# parentFile = \"isastar\"\n",
"# parentTitle = 'instanceOfOrSubclass'\n",
"\n",
"# if len(type1) != 0 and type1[0][0] == \"Q21502408\":\n",
"# typeVal = \"mandatory\"\n",
"# elif len(type1) != 0 and type1[0][0] == \"Q62026391\":\n",
"# typeVal = \"suggestion\"\n",
"# else:\n",
"# typeVal = \"normal\"\n",
"\n",
"# if len(exceptions):\n",
"# exceptionPart = \"or node1 in \" + str(exceptions[0]).replace(\"'\",'\"')\n",
"# else:\n",
"# exceptionPart = \"\"\n",
" \n",
"# if cnt % 100 == 0:\n",
"# fOP = open(\"../../propertiesSplitWRemoved/checkViolations/TimedTypeConstraintValidator\" + str(fCnt) + \".sh\",\"w\")\n",
"# fCnt += 1\n",
" \n",
"# fOP.write(\"{ time kgtk --debug query -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
"# ../../wikidata-20210215/derived.\" + parentFile + \".tsv.gz \\\n",
"# --match 'm: (node1)-[nodeProp]->(node2), d: (node1)-[]->(par)' \\\n",
"# --where 'par in \" + str(parents).replace(\"'\",'\"') + \" \" + exceptionPart + \"' \\\n",
"# --return 'nodeProp.id, node1, nodeProp.label, node2' \\\n",
"# -o ../../allConstraintsAnalysisWRemoved/TimedTypeConstraint/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct.tsv \\\n",
"# --graph-cache ~/sqlite3_caches/const2123_\" + str(fCnt) + \".sqlite3.db; } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/TimedTypeConstraint_TimedTypeConstraintValidator\" + str(fCnt) + \".txt ; \\\n",
"# kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
"# --filter-on ../../allConstraintsAnalysisWRemoved/TimedTypeConstraint/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct.tsv \\\n",
"# --filter-mode NONE \\\n",
"# --input-keys node1 label \\\n",
"# --filter-keys node1 label \\\n",
"# -o ../../allConstraintsAnalysisWRemoved/TimedTypeConstraint/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".incorrect.tsv\\n\")\n",
"\n",
"# cnt += 1\n",
"# except:\n",
"# print(\"Something failed for prop:\",prop)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 93,
"id": "veterinary-fault",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "52944ea021934d23b3d4ab3fb1f091f7",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/122 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import os\n",
"from tqdm.notebook import tqdm\n",
"\n",
"codepConstViolations = {}\n",
"\n",
"codepConstViolations = {}\n",
"codepConstPropList = set()\n",
"\n",
"def extractTimes(filename):\n",
" times = []\n",
" with open(filename) as f:\n",
" for line in f:\n",
" if \"real\" in line:\n",
" line = line.strip()\n",
" time1 = line.split(\"\\t\")[1]\n",
" mins, sec = time1.split(\"m\")\n",
" mins = int(mins)\n",
" sec = float(sec[:-1])\n",
" times.append(60 * mins + sec)\n",
" return times\n",
"\n",
"# codepConstViolationsSummary = {}\n",
"times = []\n",
"filePath = '/data/wd-correctness/propertiesSplitWRemoved/checkViolations/exec_logs/'\n",
"for filename in tqdm(os.listdir(filePath)):\n",
" if filename.startswith(\"typeConstraintValidator\"):\n",
" tempTimes = extractTimes(filePath + filename)\n",
" times += tempTimes"
]
},
{
"cell_type": "code",
"execution_count": 94,
"id": "infinite-assembly",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"count 1456.000000\n",
"mean 138.470137\n",
"std 216.121977\n",
"min 2.111000\n",
"25% 23.664500\n",
"50% 43.875000\n",
"75% 158.037250\n",
"max 2177.421000\n",
"dtype: float64\n"
]
}
],
"source": [
"print(pd.Series(times).describe())"
]
},
{
"cell_type": "code",
"execution_count": 95,
"id": "opened-essex",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Distribution of times (in s) taken for type constraint checks')"
]
},
"execution_count": 95,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import seaborn as sns\n",
"sns.lineplot(data=pd.Series(times)).set_title(\"Distribution of times (in s) taken for type constraint checks\")"
]
},
{
"cell_type": "markdown",
"id": "intense-computer",
"metadata": {},
"source": [
"## Value Type Constraint"
]
},
{
"cell_type": "markdown",
"id": "animated-companion",
"metadata": {},
"source": [
"### Understand Constraints File"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "static-profit",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"dfValueType = pd.read_csv('../../constraintsOP/valuetypeConstraint/claims.type-constraints_all1.tsv',sep='\\t')"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "worthy-malawi",
"metadata": {},
"outputs": [],
"source": [
"dfValueType = dfValueType.groupby(['node1','label']).node2.apply(lambda p: p.tolist()).reset_index()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "eleven-tiffany",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" node1 \n",
" label \n",
" node2 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" P1000 \n",
" P2308 \n",
" [Q1241356] \n",
" \n",
" \n",
" 1 \n",
" P1000 \n",
" P2309 \n",
" [Q30208840] \n",
" \n",
" \n",
" 2 \n",
" P1001 \n",
" P2308 \n",
" [Q20926517, Q2881272, Q2882257, Q3624078, Q389... \n",
" \n",
" \n",
" 3 \n",
" P1001 \n",
" P2309 \n",
" [Q30208840] \n",
" \n",
" \n",
" 4 \n",
" P1002 \n",
" P2308 \n",
" [Q2576663] \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" node1 label node2\n",
"0 P1000 P2308 [Q1241356]\n",
"1 P1000 P2309 [Q30208840]\n",
"2 P1001 P2308 [Q20926517, Q2881272, Q2882257, Q3624078, Q389...\n",
"3 P1001 P2309 [Q30208840]\n",
"4 P1002 P2308 [Q2576663]"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfValueType.head()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "expired-stuff",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['P2308', 'P2309', 'P2303', 'P2316', 'P6607', 'P2304'], dtype=object)"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfValueType['label'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "imposed-newsletter",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" node1 \n",
" label \n",
" node2 \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [node1, label, node2]\n",
"Index: []"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfValueType[dfValueType['label'] == '2316']"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "answering-alabama",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" node1 \n",
" label \n",
" node2 \n",
" \n",
" \n",
" \n",
" \n",
" 330 \n",
" P1659 \n",
" P2308 \n",
" [Q18616576] \n",
" \n",
" \n",
" 331 \n",
" P1659 \n",
" P2309 \n",
" [Q21503252] \n",
" \n",
" \n",
" 332 \n",
" P1659 \n",
" P2316 \n",
" [Q21502408] \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" node1 label node2\n",
"330 P1659 P2308 [Q18616576]\n",
"331 P1659 P2309 [Q21503252]\n",
"332 P1659 P2316 [Q21502408]"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfValueType[dfValueType['node1'] == 'P1659']"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "danish-blackberry",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" node1 \n",
" label \n",
" node2 \n",
" \n",
" \n",
" \n",
" \n",
" 2031 \n",
" P991 \n",
" P2308 \n",
" [Q5, Q7210356] \n",
" \n",
" \n",
" 2032 \n",
" P991 \n",
" P2309 \n",
" [Q21503252] \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" node1 label node2\n",
"2031 P991 P2308 [Q5, Q7210356]\n",
"2032 P991 P2309 [Q21503252]"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfValueType[dfValueType.node1 == 'P991']"
]
},
{
"cell_type": "markdown",
"id": "digital-harvard",
"metadata": {},
"source": [
"### Query Generator"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "white-badge",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b96db3afdc724a0496617ce8c5838e6a",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/932 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Something failed for prop: P1389\n"
]
}
],
"source": [
"from tqdm.notebook import tqdm\n",
"import os.path\n",
"import os\n",
"\n",
"cnt = 0\n",
"fCnt = 1\n",
"for prop in tqdm(dfValueType.node1.unique()):\n",
" try:\n",
" \n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv\")):\n",
" continue\n",
" relation = dfValueType[(dfValueType['node1'] == prop) & (dfValueType['label'] == 'P2309')].node2.values[0][0]\n",
" type1 = dfValueType[(dfValueType['node1'] == prop) & (dfValueType['label'] == 'P2316')].node2.values\n",
"# print(type1)\n",
"\n",
" parents = dfValueType[(dfValueType['node1'] == prop) & (dfValueType['label'] == 'P2308')].node2.values[0]\n",
" exceptions = dfValueType[(dfValueType['node1'] == prop) & (dfValueType['label'] == 'P2303')].node2.values\n",
" \n",
" if relation == \"Q21503252\":\n",
" parentFile = \"P31\"\n",
" parentTitle = 'instanceOf'\n",
" elif relation == \"Q21514624\":\n",
" parentFile = \"P279\"\n",
" parentTitle = 'subclass'\n",
" else:\n",
" parentFile = \"isa\"\n",
" parentTitle = 'instanceOfOrSubclass'\n",
"\n",
" if len(type1) != 0 and type1[0][0] == \"Q21502408\":\n",
" typeVal = \"mandatory\"\n",
" elif len(type1) != 0 and type1[0][0] == \"Q62026391\":\n",
" typeVal = \"suggestion\"\n",
" else:\n",
" typeVal = \"normal\"\n",
"\n",
" if len(exceptions):\n",
" exceptionPart = \"or node2 in \" + str(exceptions[0]).replace(\"'\",'\"')\n",
" else:\n",
" exceptionPart = \"\"\n",
" \n",
" folderName = 'valuetypeConstraint_Final4'\n",
" shellFileSuffix = 'valueTypeConstraintValidator'\n",
" \n",
" if cnt % 120 == 0:\n",
" if fOP:\n",
" fOP.close()\n",
" fOP = open(\"../../propertiesSplitWRemoved/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n",
" fCnt += 1\n",
" \n",
" fOP.write(\"{ time (kgtk --debug query -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" ../../wikidata-20210215/derived.\" + parentFile + \".tsv.gz \\\n",
" ../../wikidata-20210215/derived.P279star.tsv.gz \\\n",
" --match 'm: (node1)-[nodeProp]->(node2), \" + parentFile + \": (node2)-[]->(nodex), P279star: (nodex)-[]->(par)' \\\n",
" --where 'par in \" + str(parents).replace(\"'\",'\"') + \" \" + exceptionPart + \"' \\\n",
" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct.tsv \\\n",
" --graph-cache ~/sqlite3_caches/const112_\" + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".correct.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + typeVal + \"/claims.type-constraints.\" + parentTitle + \".\"+ prop +\".incorrect.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/\" + shellFileSuffix + str(fCnt) + \".txt;\\n\")\n",
" \n",
" cnt += 1\n",
" except:\n",
" print(\"Something failed for prop:\",prop)\n",
"if fOP:\n",
" fOP.close()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "qualified-cursor",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"904"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cnt"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "simplified-cameroon",
"metadata": {},
"outputs": [],
"source": [
"# import os\n",
"# for i in range(1,9):\n",
"# os.system(\"screen -dm sh ../../propertiesSplitWRemoved/checkViolations/valueTypeConstraintValidator\"+str(i)+\".sh\")\n",
" "
]
},
{
"cell_type": "markdown",
"id": "spectacular-warner",
"metadata": {},
"source": [
"### Analyze Violations"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "valid-defense",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "c502a0c289de4c23b2fa3b794a7ba160",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "11d7ec28a49f4cdaa883b933b055cfaa",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/216 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4d6ee69917854e399d21ef509a4b4fb6",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/10 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "6d1e8918873840c48f5944c4d0ca6ba1",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/1582 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import os\n",
"from tqdm.notebook import tqdm\n",
"\n",
"valueTypeConstViolations = {}\n",
"\n",
"def countLines(fname):\n",
" cnt = -1\n",
" with open(fname, 'r') as f:\n",
" for line in f:\n",
" cnt += 1\n",
" return cnt\n",
"\n",
"valueTypePropList = set()\n",
"\n",
"violations = {}\n",
"\n",
"for folder in tqdm(iter(['mandatory', 'suggestion', 'normal'])):\n",
" valueTypeConstViolations[folder] = {'instanceOf': {'correct': 0, 'incorrect': 0}, 'subclass': {'correct': 0, 'incorrect': 0}, 'instanceOfOrSubclass': {'correct': 0, 'incorrect': 0}, 'propCount':0}\n",
" filePath = \"../../allConstraintsAnalysisWRemoved/valuetypeConstraint_Final4/\"+folder+\"/\"\n",
" for filename in tqdm(os.listdir(filePath)):\n",
" type1 = filename.split(\".\")[2]\n",
" prop = filename.split(\".\")[3]\n",
" valueTypePropList.add(prop)\n",
" correctness = filename.split(\".\")[4]\n",
" count1 = countLines(filePath+filename)\n",
" valueTypeConstViolations[folder][type1][correctness] += count1\n",
" if prop not in violations:\n",
" violations[prop] = {'correct': 0, 'incorrect': 0, 'paths': []}\n",
" violations[prop][correctness] = count1\n",
" violations[prop]['paths'].append(filePath+filename)\n",
" if correctness == 'correct':\n",
" valueTypeConstViolations[folder]['propCount'] += 1\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "experienced-quick",
"metadata": {},
"outputs": [],
"source": [
"# countLines(\"../../allConstraintsAnalysisWRemoved/typeConstraint/mandatory/claims.type-constraints.subclass.P534.incorrect.tsv\")"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "refined-speaking",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"904 properties processed for value type constraint for 189304521 statements\n"
]
}
],
"source": [
"recordCount = 0\n",
"for elem in valueTypeConstViolations.keys():\n",
" for key1 in valueTypeConstViolations[elem].keys():\n",
" try:\n",
" recordCount += valueTypeConstViolations[elem][key1]['correct'] + valueTypeConstViolations[elem][key1]['incorrect']\n",
" except:\n",
" continue\n",
"print(f\"{len(valueTypePropList)} properties processed for value type constraint for {recordCount} statements\")"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "designed-christian",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"valTypeConstDF = pd.DataFrame(violations).T"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "spare-hawaiian",
"metadata": {},
"outputs": [],
"source": [
"valTypeConstDF['violation_ratio'] = valTypeConstDF.apply(lambda p: p.incorrect / (p.incorrect + p.correct), axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "provincial-diploma",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P852 \n",
" 4526 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 0.000883 \n",
" \n",
" \n",
" P853 \n",
" 1600 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 0.002494 \n",
" \n",
" \n",
" P2302 \n",
" 47918 \n",
" 26 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 0.000542 \n",
" \n",
" \n",
" P3092 \n",
" 7534 \n",
" 7 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 0.000928 \n",
" \n",
" \n",
" P3096 \n",
" 11193 \n",
" 10 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 0.000893 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P852 4526 4 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P853 1600 4 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P2302 47918 26 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P3092 7534 7 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P3096 11193 10 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"\n",
" violation_ratio \n",
"P852 0.000883 \n",
"P853 0.002494 \n",
"P2302 0.000542 \n",
"P3092 0.000928 \n",
"P3096 0.000893 "
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"valTypeConstDF.head()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "neural-trail",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P5008 \n",
" 0 \n",
" 341961 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 1.0 \n",
" \n",
" \n",
" P6104 \n",
" 0 \n",
" 9808 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 1.0 \n",
" \n",
" \n",
" P2545 \n",
" 0 \n",
" 1378 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 1.0 \n",
" \n",
" \n",
" P2668 \n",
" 0 \n",
" 179 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 1.0 \n",
" \n",
" \n",
" P7374 \n",
" 0 \n",
" 44 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 1.0 \n",
" \n",
" \n",
" P3028 \n",
" 0 \n",
" 15 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 1.0 \n",
" \n",
" \n",
" P2839 \n",
" 0 \n",
" 15 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 1.0 \n",
" \n",
" \n",
" P3027 \n",
" 0 \n",
" 13 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 1.0 \n",
" \n",
" \n",
" P2127 \n",
" 0 \n",
" 12 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 1.0 \n",
" \n",
" \n",
" P538 \n",
" 0 \n",
" 10 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 1.0 \n",
" \n",
" \n",
" P2241 \n",
" 0 \n",
" 6 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 1.0 \n",
" \n",
" \n",
" P4425 \n",
" 0 \n",
" 6 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 1.0 \n",
" \n",
" \n",
" P6191 \n",
" 0 \n",
" 5 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 1.0 \n",
" \n",
" \n",
" P6533 \n",
" 0 \n",
" 5 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 1.0 \n",
" \n",
" \n",
" P6534 \n",
" 0 \n",
" 5 \n",
" [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
" 1.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P5008 0 341961 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P6104 0 9808 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P2545 0 1378 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P2668 0 179 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P7374 0 44 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P3028 0 15 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P2839 0 15 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P3027 0 13 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P2127 0 12 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P538 0 10 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P2241 0 6 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P4425 0 6 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P6191 0 5 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P6533 0 5 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"P6534 0 5 [../../allConstraintsAnalysisWRemoved/valuetyp... \n",
"\n",
" violation_ratio \n",
"P5008 1.0 \n",
"P6104 1.0 \n",
"P2545 1.0 \n",
"P2668 1.0 \n",
"P7374 1.0 \n",
"P3028 1.0 \n",
"P2839 1.0 \n",
"P3027 1.0 \n",
"P2127 1.0 \n",
"P538 1.0 \n",
"P2241 1.0 \n",
"P4425 1.0 \n",
"P6191 1.0 \n",
"P6533 1.0 \n",
"P6534 1.0 "
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"valTypeConstDF.sort_values(by=['violation_ratio','incorrect'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "cutting-polyester",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 904.000000\n",
"mean 0.098485\n",
"std 0.214803\n",
"min 0.000000\n",
"25% 0.001492\n",
"50% 0.011225\n",
"75% 0.063950\n",
"max 1.000000\n",
"Name: violation_ratio, dtype: float64"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"valTypeConstDF['violation_ratio'].describe()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "alert-receiver",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Value Type Constraint Violation Ratios')"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"valTypeConstDF['violation_ratio'].plot.hist(bins=100).set_title(\"Value Type Constraint Violation Ratios\")"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "italian-motel",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Value Type Constraint Violation Ratios (<=0.04)')"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"valTypeConstDF[valTypeConstDF['violation_ratio'] <= 0.04].violation_ratio.plot.hist(bins=100).set_title(\"Value Type Constraint Violation Ratios (<=0.04)\")"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "prescription-ceramic",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"No. of constraints whose violation ratio is greater than mean :0/904\n"
]
}
],
"source": [
"print(f\"No. of constraints whose violation ratio is greater than mean :{sum(valTypeConstDF['violation_ratio'] >= 3.950680)}/{len(valTypeConstDF)}\")"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "quiet-gardening",
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"# valTypeConstDF.sort_values(by=['violation_ratio'],ascending=False).head().paths.values"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "documentary-pipeline",
"metadata": {},
"outputs": [],
"source": [
"# !head ../../allConstraintsAnalysisWRemoved/typeConstraint/normal/claims.type-constraints.instanceOf.P7535.incorrect.tsv"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "tutorial-mineral",
"metadata": {},
"outputs": [],
"source": [
"for key1 in valueTypeConstViolations.keys():\n",
" valueTypeConstViolations[key1]['correct'] = valueTypeConstViolations[key1]['instanceOf']['correct'] + valueTypeConstViolations[key1]['subclass']['correct'] + valueTypeConstViolations[key1]['instanceOfOrSubclass']['correct']\n",
" valueTypeConstViolations[key1]['incorrect'] = valueTypeConstViolations[key1]['instanceOf']['incorrect'] + valueTypeConstViolations[key1]['subclass']['incorrect'] + valueTypeConstViolations[key1]['instanceOfOrSubclass']['incorrect']\n",
" valueTypeConstViolations[key1]['VR'] = valueTypeConstViolations[key1]['incorrect'] / (valueTypeConstViolations[key1]['correct'] + valueTypeConstViolations[key1]['incorrect'])\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "satellite-concern",
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"{'mandatory': {'instanceOf': {'correct': 11564885, 'incorrect': 8245},\n",
" 'subclass': {'correct': 55983, 'incorrect': 28},\n",
" 'instanceOfOrSubclass': {'correct': 13090, 'incorrect': 137},\n",
" 'propCount': 108,\n",
" 'correct': 11633958,\n",
" 'incorrect': 8410,\n",
" 'VR': 0.0007223616363956198},\n",
" 'suggestion': {'instanceOf': {'correct': 46189, 'incorrect': 659},\n",
" 'subclass': {'correct': 127, 'incorrect': 20},\n",
" 'instanceOfOrSubclass': {'correct': 0, 'incorrect': 0},\n",
" 'propCount': 5,\n",
" 'correct': 46316,\n",
" 'incorrect': 679,\n",
" 'VR': 0.01444834556867752},\n",
" 'normal': {'instanceOf': {'correct': 94112173, 'incorrect': 842434},\n",
" 'subclass': {'correct': 4674914, 'incorrect': 9777},\n",
" 'instanceOfOrSubclass': {'correct': 77686561, 'incorrect': 289299},\n",
" 'propCount': 791,\n",
" 'correct': 176473648,\n",
" 'incorrect': 1141510,\n",
" 'VR': 0.006426872643381034}}"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"valueTypeConstViolations"
]
},
{
"cell_type": "markdown",
"id": "traditional-shakespeare",
"metadata": {},
"source": [
"### Find out time required"
]
},
{
"cell_type": "code",
"execution_count": 78,
"id": "spoken-symphony",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "878ab763f4fa4cb9a540c8bf86ea76ec",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/297 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import os\n",
"from tqdm.notebook import tqdm\n",
"\n",
"codepConstViolations = {}\n",
"\n",
"codepConstViolations = {}\n",
"codepConstPropList = set()\n",
"\n",
"def extractTimes(filename):\n",
" times = []\n",
" with open(filename) as f:\n",
" for line in f:\n",
" if \"real\" in line:\n",
" line = line.strip()\n",
" time1 = line.split(\"\\t\")[1]\n",
" mins, sec = time1.split(\"m\")\n",
" mins = int(mins)\n",
" sec = float(sec[:-1])\n",
" times.append(60 * mins + sec)\n",
" return times\n",
"\n",
"# codepConstViolationsSummary = {}\n",
"times = []\n",
"filePath = '/data/wd-correctness/propertiesSplitWRemoved/checkViolations/exec_logs/'\n",
"for filename in tqdm(os.listdir(filePath)):\n",
" if filename.startswith(\"valueTypeConstraintValidator_xverify3\"):\n",
" tempTimes = extractTimes(filePath + filename)\n",
" times += tempTimes"
]
},
{
"cell_type": "code",
"execution_count": 79,
"id": "heavy-argentina",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"count 897.000000\n",
"mean 41.756467\n",
"std 133.639231\n",
"min 1.516000\n",
"25% 3.236000\n",
"50% 6.851000\n",
"75% 24.280000\n",
"max 1683.328000\n",
"dtype: float64\n"
]
}
],
"source": [
"print(pd.Series(times).describe())"
]
},
{
"cell_type": "code",
"execution_count": 80,
"id": "organized-mixer",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Distribution of times (in s) taken for value type constraint checks')"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import seaborn as sns\n",
"sns.lineplot(data=pd.Series(times)).set_title(\"Distribution of times (in s) taken for value type constraint checks\")"
]
},
{
"cell_type": "markdown",
"id": "motivated-sympathy",
"metadata": {},
"source": [
"## Item Requires Statement Constraint"
]
},
{
"cell_type": "markdown",
"id": "chubby-glass",
"metadata": {},
"source": [
"### Understand Constraints File"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "funny-batch",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import math\n",
"dfItemRequires = pd.read_csv('../../constraintsOP/itemRequiresConstraint/claims.type-constraints_all.tsv',sep='\\t')"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "original-expression",
"metadata": {},
"outputs": [],
"source": [
"dfItemRequires = dfItemRequires.groupby(['id','node1','label']).node2.apply(lambda p: p.tolist()).reset_index()"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "adequate-symphony",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['P2306', 'P2305', 'P2316', 'P2304', 'P2303', 'P6607', 'P4155',\n",
" 'P31', 'P2916', 'P4680', 'P2308'], dtype=object)"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfItemRequires['label'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "infrared-canal",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"P2306 7182\n",
"P2305 2540\n",
"P2316 2523\n",
"P2303 422\n",
"P2304 14\n",
"P6607 14\n",
"P2916 5\n",
"P4680 2\n",
"P4155 1\n",
"P2308 1\n",
"P31 1\n",
"Name: label, dtype: int64"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfItemRequires['label'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "focused-karen",
"metadata": {},
"outputs": [],
"source": [
"#Reference: https://stackoverflow.com/a/17298454\n",
"# dfItemRequires.pivot_table('node2', ['node1', 'id'], 'label')\n",
"dfItemRequires = dfItemRequires.pivot(index=['node1','id'], columns='label', values='node2')"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "private-boundary",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" label \n",
" P2303 \n",
" P2304 \n",
" P2305 \n",
" P2306 \n",
" P2308 \n",
" P2316 \n",
" P2916 \n",
" P31 \n",
" P4155 \n",
" P4680 \n",
" P6607 \n",
" \n",
" \n",
" node1 \n",
" id \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" P1006 \n",
" P1006-P2302-Q21503247-0451ef47-0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" [P214] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1010 \n",
" P1010-P2302-Q21503247-56183614-0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" [P31] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1010-P2302-Q21503247-fd256eaf-0 \n",
" NaN \n",
" NaN \n",
" [Q794] \n",
" [P17] \n",
" NaN \n",
" [Q21502408] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1015 \n",
" P1015-P2302-Q21503247-20e3bfc5-0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" [P31] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1017 \n",
" P1017-P2302-Q21503247-bbac2ce3-0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" [P214] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"label P2303 P2304 P2305 P2306 P2308 \\\n",
"node1 id \n",
"P1006 P1006-P2302-Q21503247-0451ef47-0 NaN NaN NaN [P214] NaN \n",
"P1010 P1010-P2302-Q21503247-56183614-0 NaN NaN NaN [P31] NaN \n",
" P1010-P2302-Q21503247-fd256eaf-0 NaN NaN [Q794] [P17] NaN \n",
"P1015 P1015-P2302-Q21503247-20e3bfc5-0 NaN NaN NaN [P31] NaN \n",
"P1017 P1017-P2302-Q21503247-bbac2ce3-0 NaN NaN NaN [P214] NaN \n",
"\n",
"label P2316 P2916 P31 P4155 P4680 \\\n",
"node1 id \n",
"P1006 P1006-P2302-Q21503247-0451ef47-0 NaN NaN NaN NaN NaN \n",
"P1010 P1010-P2302-Q21503247-56183614-0 NaN NaN NaN NaN NaN \n",
" P1010-P2302-Q21503247-fd256eaf-0 [Q21502408] NaN NaN NaN NaN \n",
"P1015 P1015-P2302-Q21503247-20e3bfc5-0 NaN NaN NaN NaN NaN \n",
"P1017 P1017-P2302-Q21503247-bbac2ce3-0 NaN NaN NaN NaN NaN \n",
"\n",
"label P6607 \n",
"node1 id \n",
"P1006 P1006-P2302-Q21503247-0451ef47-0 NaN \n",
"P1010 P1010-P2302-Q21503247-56183614-0 NaN \n",
" P1010-P2302-Q21503247-fd256eaf-0 NaN \n",
"P1015 P1015-P2302-Q21503247-20e3bfc5-0 NaN \n",
"P1017 P1017-P2302-Q21503247-bbac2ce3-0 NaN "
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfItemRequires.head()"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "conceptual-schedule",
"metadata": {},
"outputs": [],
"source": [
"dfItemRequires = dfItemRequires.droplevel(1)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "third-hayes",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" label \n",
" P2303 \n",
" P2304 \n",
" P2305 \n",
" P2306 \n",
" P2308 \n",
" P2316 \n",
" P2916 \n",
" P31 \n",
" P4155 \n",
" P4680 \n",
" P6607 \n",
" \n",
" \n",
" node1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" P1006 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" [P214] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1010 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" [P31] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1010 \n",
" NaN \n",
" NaN \n",
" [Q794] \n",
" [P17] \n",
" NaN \n",
" [Q21502408] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1015 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" [P31] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1017 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" [P214] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"label P2303 P2304 P2305 P2306 P2308 P2316 P2916 P31 P4155 P4680 \\\n",
"node1 \n",
"P1006 NaN NaN NaN [P214] NaN NaN NaN NaN NaN NaN \n",
"P1010 NaN NaN NaN [P31] NaN NaN NaN NaN NaN NaN \n",
"P1010 NaN NaN [Q794] [P17] NaN [Q21502408] NaN NaN NaN NaN \n",
"P1015 NaN NaN NaN [P31] NaN NaN NaN NaN NaN NaN \n",
"P1017 NaN NaN NaN [P214] NaN NaN NaN NaN NaN NaN \n",
"\n",
"label P6607 \n",
"node1 \n",
"P1006 NaN \n",
"P1010 NaN \n",
"P1010 NaN \n",
"P1015 NaN \n",
"P1017 NaN "
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfItemRequires.head()"
]
},
{
"cell_type": "markdown",
"id": "shaped-companion",
"metadata": {},
"source": [
"However, there is one anomaly where the property does not have a co-dependency constraint associated with it, but still has a link to this constraint."
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "indian-journal",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" label \n",
" P2303 \n",
" P2304 \n",
" P2305 \n",
" P2306 \n",
" P2308 \n",
" P2316 \n",
" P2916 \n",
" P31 \n",
" P4155 \n",
" P4680 \n",
" P6607 \n",
" \n",
" \n",
" node1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" P5447 \n",
" NaN \n",
" NaN \n",
" [Q55426051] \n",
" [P5446] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" [Q46466783] \n",
" NaN \n",
" \n",
" \n",
" P5448 \n",
" NaN \n",
" NaN \n",
" [Q55426051] \n",
" [P5446] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" [Q46466783] \n",
" NaN \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"label P2303 P2304 P2305 P2306 P2308 P2316 P2916 P31 P4155 \\\n",
"node1 \n",
"P5447 NaN NaN [Q55426051] [P5446] NaN NaN NaN NaN NaN \n",
"P5448 NaN NaN [Q55426051] [P5446] NaN NaN NaN NaN NaN \n",
"\n",
"label P4680 P6607 \n",
"node1 \n",
"P5447 [Q46466783] NaN \n",
"P5448 [Q46466783] NaN "
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfItemRequires[dfItemRequires['P4680'].apply(lambda p: type(p) == list)]"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "discrete-template",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" label \n",
" P2303 \n",
" P2304 \n",
" P2305 \n",
" P2306 \n",
" P2308 \n",
" P2316 \n",
" P2916 \n",
" P31 \n",
" P4155 \n",
" P4680 \n",
" P6607 \n",
" \n",
" \n",
" node1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" P1010 \n",
" NaN \n",
" NaN \n",
" [Q794] \n",
" [P17] \n",
" NaN \n",
" [Q21502408] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1045 \n",
" NaN \n",
" NaN \n",
" [Q20808382, Q28218485, Q3044918] \n",
" [P39] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1045 \n",
" NaN \n",
" NaN \n",
" [Q82955] \n",
" [P106] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1045 \n",
" NaN \n",
" NaN \n",
" [Q5] \n",
" [P31] \n",
" NaN \n",
" [Q21502408] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1045 \n",
" NaN \n",
" NaN \n",
" [Q142, Q71084] \n",
" [P27] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" P980 \n",
" NaN \n",
" NaN \n",
" [Q34] \n",
" [P17] \n",
" NaN \n",
" [Q21502408] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P981 \n",
" NaN \n",
" NaN \n",
" [Q55] \n",
" [P17] \n",
" NaN \n",
" [Q21502408] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P981 \n",
" NaN \n",
" NaN \n",
" [Q1852859] \n",
" [P31] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P988 \n",
" NaN \n",
" NaN \n",
" [Q928] \n",
" [P17] \n",
" NaN \n",
" [Q21502408] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P990 \n",
" [Q49678, Q853715] \n",
" NaN \n",
" [Q5] \n",
" [P31] \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
"
\n",
"
2540 rows × 11 columns
\n",
"
"
],
"text/plain": [
"label P2303 P2304 P2305 P2306 \\\n",
"node1 \n",
"P1010 NaN NaN [Q794] [P17] \n",
"P1045 NaN NaN [Q20808382, Q28218485, Q3044918] [P39] \n",
"P1045 NaN NaN [Q82955] [P106] \n",
"P1045 NaN NaN [Q5] [P31] \n",
"P1045 NaN NaN [Q142, Q71084] [P27] \n",
"... ... ... ... ... \n",
"P980 NaN NaN [Q34] [P17] \n",
"P981 NaN NaN [Q55] [P17] \n",
"P981 NaN NaN [Q1852859] [P31] \n",
"P988 NaN NaN [Q928] [P17] \n",
"P990 [Q49678, Q853715] NaN [Q5] [P31] \n",
"\n",
"label P2308 P2316 P2916 P31 P4155 P4680 P6607 \n",
"node1 \n",
"P1010 NaN [Q21502408] NaN NaN NaN NaN NaN \n",
"P1045 NaN NaN NaN NaN NaN NaN NaN \n",
"P1045 NaN NaN NaN NaN NaN NaN NaN \n",
"P1045 NaN [Q21502408] NaN NaN NaN NaN NaN \n",
"P1045 NaN NaN NaN NaN NaN NaN NaN \n",
"... ... ... ... ... ... ... ... \n",
"P980 NaN [Q21502408] NaN NaN NaN NaN NaN \n",
"P981 NaN [Q21502408] NaN NaN NaN NaN NaN \n",
"P981 NaN NaN NaN NaN NaN NaN NaN \n",
"P988 NaN [Q21502408] NaN NaN NaN NaN NaN \n",
"P990 NaN NaN NaN NaN NaN NaN NaN \n",
"\n",
"[2540 rows x 11 columns]"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfItemRequires[dfItemRequires['P2305'].apply(lambda p: type(p) == list)]"
]
},
{
"cell_type": "markdown",
"id": "forced-christmas",
"metadata": {},
"source": [
"### Query Generator"
]
},
{
"cell_type": "markdown",
"id": "acquired-floor",
"metadata": {},
"source": [
"#### Version 1 - Mandatory + Suggestion + Normal"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "turkish-establishment",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "58498333945f45ad9e343d82c18fdfb6",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/3147 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File: ../../propertiesSplitWRemoved/claims.P8299.tsv does not exist\n",
"File: ../../propertiesSplitWRemoved/claims.P8529.tsv does not exist\n",
"File: ../../propertiesSplitWRemoved/claims.P7118.tsv does not exist\n",
"File: ../../propertiesSplitWRemoved/claims.P7119.tsv does not exist\n"
]
}
],
"source": [
"from tqdm.notebook import tqdm\n",
"import os.path\n",
"import os\n",
"\n",
"cnt = 0\n",
"fCnt = 0\n",
"\n",
"folderName = 'codependencyConstraint_Final'\n",
"subFolderName = \"Mand_Sugg_Normal\"\n",
"shellFileSuffix = 'codepConst_MSN_Validator_new2_'\n",
"graph_cache_file_prefix = \"codep_new3_001_\"\n",
"\n",
"for prop in tqdm(dfItemRequires.index.unique()):\n",
"# try:\n",
" mandatory = []\n",
" suggestion = []\n",
" normal = []\n",
" prop = str(prop)\n",
" \n",
" for _, constraint in dfItemRequires.loc[[prop]].iterrows():\n",
" if type(constraint['P2316']) == list:\n",
" if constraint['P2316'][0] == 'Q21502408':\n",
" mandatory.append(constraint)\n",
" elif constraint['P2316'][0] == 'Q62026391':\n",
" suggestion.append(constraint)\n",
" else:\n",
" normal.append(constraint)\n",
" \n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv\")):\n",
" continue\n",
" \n",
" commandInit = \"{ time ( kgtk --debug query -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \"\n",
" commandOtherFiles = \"\"\n",
" commandMatch = \"--match '\"\n",
" commandMatchMoreFiles = [f\"{prop}: (node1)-[nodeProp]->(node2)\"]\n",
" commandWhere = \" --where '\"\n",
" commandWhere = []\n",
" \n",
" # Version 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n",
" constSet = mandatory + suggestion + normal\n",
" \n",
" if len(constSet) == 0:\n",
" continue\n",
" excptns = set()\n",
" for (rowNo, constraint) in enumerate(constSet):\n",
" prop2 = constraint['P2306']\n",
" \n",
" if type(prop2) != list:\n",
" continue\n",
" prop2 = prop2[0]\n",
" \n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop2 +\".tsv\")):\n",
" print(f\"File: ../../propertiesSplitWRemoved/claims.{prop2}.tsv does not exist\")\n",
" continue\n",
" \n",
" commandOtherFiles += \"../../propertiesSplitWRemoved/claims.\"+ prop2 +\".tsv \"\n",
" if type(constraint['P2303']) == list: # Exceptions present\n",
" if len(excptns) == 0:\n",
" excptns = set(constraint['P2303'])\n",
" else:\n",
" excptns = excptns.intersection(set(constraint['P2303']))\n",
" if type(constraint['P2305']) == list:\n",
" commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->(node2_{prop2})\"]\n",
" commandWhere += [\"node2_\" + prop2 + \" in \" + str(list(constraint['P2305'])).replace(\"'\",'\"')]\n",
" else:\n",
" commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->()\"]\n",
"# print(commandMatchMoreFiles)\n",
" if len(commandWhere) == 0:\n",
" command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\"\n",
" else:\n",
" command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\" + \" --where '\"+(\" and \".join(commandWhere))+\"'\"\n",
" \n",
" if cnt % 100 == 0:\n",
" if fOP:\n",
" fOP.close()\n",
" fCnt += 1\n",
" fOP = open(\"../../propertiesSplitWRemoved/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n",
" \n",
" if len(excptns) == 0:\n",
" commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \"\n",
" \n",
" commandOPFile = \"-o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n",
" \n",
" command += commandRest + commandOPFile + \"incorrect.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n",
" fOP.write(command)\n",
" else:\n",
" commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \"\n",
" \n",
" commandOPFile = \"-o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n",
" \n",
" command += commandRest + commandOPFile + \"incorrect_wo_exceptions.tsv\\n\"\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk --debug query -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n",
" --match '(node1)-[]->()' --where 'node1 in \" + str(list(excptns)).replace(\"'\",'\"') + \"' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \"\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk --debug ifnotexists -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect.tsv; \"\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk cat -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect_w_exceptions.tsv \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt; \\n\"\n",
" fOP.write(command)\n",
" \n",
" \n",
" cnt += 1\n",
"# except:\n",
"# print(\"Something failed for prop:\",prop)\n",
"if fOP:\n",
" fOP.close()"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "peripheral-herald",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2538"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cnt"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "incorporated-logistics",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"26"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fCnt"
]
},
{
"cell_type": "code",
"execution_count": 123,
"id": "welcome-welding",
"metadata": {},
"outputs": [],
"source": [
"# from tqdm.notebook import tqdm\n",
"# import os.path\n",
"# import os\n",
"# folderName = 'codependencyConstraint'\n",
"# for prop in tqdm(dfItemRequires.index.unique()):\n",
"# for subFolderName in ['Mand_Sugg_Normal', 'Mand_Normal', 'Mand', 'Normal']:\n",
"# if os.path.isfile(\"../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv\") and \\\n",
"# os.path.isfile(\"../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect_w_exceptions.tsv\"):\n",
"# os.system(\"kgtk cat -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n",
"# ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect_w_exceptions.tsv \\\n",
"# -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_w_exceptions.tsv\")"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "optimum-blowing",
"metadata": {},
"outputs": [],
"source": [
"# import os\n",
"# for i in range(1,28):\n",
"# os.system(\"screen -dm sh ../../propertiesSplitWRemoved/checkViolations/codepConst_MSN_Validator_new2_\"+str(i)+\".sh\")"
]
},
{
"cell_type": "markdown",
"id": "indoor-verse",
"metadata": {},
"source": [
"#### Version 2 - Mandatory + Normal"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "furnished-paradise",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "1f146f81033b43b7af22588beedb3d15",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/3147 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File: ../../propertiesSplitWRemoved/claims.P8529.tsv does not exist\n"
]
}
],
"source": [
"from tqdm.notebook import tqdm\n",
"import os.path\n",
"import os\n",
"\n",
"cnt = 0\n",
"fCnt = 0\n",
"\n",
"folderName = 'codependencyConstraint_Final'\n",
"subFolderName = \"Mand_Normal\"\n",
"shellFileSuffix = 'codepConst_MN_Validator_new2_'\n",
"graph_cache_file_prefix = \"codep_new3_02_\"\n",
"\n",
"for prop in tqdm(dfItemRequires.index.unique()):\n",
"# try:\n",
" mandatory = []\n",
" suggestion = []\n",
" normal = []\n",
" prop = str(prop)\n",
" \n",
" for _, constraint in dfItemRequires.loc[[prop]].iterrows():\n",
" if type(constraint['P2316']) == list:\n",
" if constraint['P2316'][0] == 'Q21502408':\n",
" mandatory.append(constraint)\n",
" elif constraint['P2316'][0] == 'Q62026391':\n",
" suggestion.append(constraint)\n",
" else:\n",
" normal.append(constraint)\n",
" \n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv\")):\n",
" continue\n",
" \n",
" commandInit = \"{ time ( kgtk --debug query -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \"\n",
" commandOtherFiles = \"\"\n",
" commandMatch = \"--match '\"\n",
" commandMatchMoreFiles = [f\"{prop}: (node1)-[nodeProp]->(node2)\"]\n",
" commandWhere = \" --where '\"\n",
" commandWhere = []\n",
" \n",
" # Version 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n",
" constSet = mandatory + normal\n",
" \n",
" if len(constSet) == 0:\n",
" continue\n",
" excptns = set()\n",
" for (rowNo, constraint) in enumerate(constSet):\n",
" prop2 = constraint['P2306']\n",
" \n",
" if type(prop2) != list:\n",
" continue\n",
" prop2 = prop2[0]\n",
" \n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop2 +\".tsv\")):\n",
" print(f\"File: ../../propertiesSplitWRemoved/claims.{prop2}.tsv does not exist\")\n",
" continue\n",
" \n",
" commandOtherFiles += \"../../propertiesSplitWRemoved/claims.\"+ prop2 +\".tsv \"\n",
" if type(constraint['P2303']) == list: # Exceptions present\n",
" if len(excptns) == 0:\n",
" excptns = set(constraint['P2303'])\n",
" else:\n",
" excptns = excptns.intersection(set(constraint['P2303']))\n",
" if type(constraint['P2305']) == list:\n",
" commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->(node2_{prop2})\"]\n",
" commandWhere += [\"node2_\" + prop2 + \" in \" + str(list(constraint['P2305'])).replace(\"'\",'\"')]\n",
" else:\n",
" commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->()\"]\n",
"# print(commandMatchMoreFiles)\n",
" if len(commandWhere) == 0:\n",
" command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\"\n",
" else:\n",
" command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\" + \" --where '\"+(\" and \".join(commandWhere))+\"'\"\n",
" \n",
" if cnt % 100 == 0:\n",
" if fOP:\n",
" fOP.close()\n",
" fCnt += 1\n",
" fOP = open(\"../../propertiesSplitWRemoved/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n",
" \n",
" if len(excptns) == 0:\n",
" commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \"\n",
" \n",
" commandOPFile = \"-o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n",
" \n",
" command += commandRest + commandOPFile + \"incorrect.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n",
" fOP.write(command)\n",
" else:\n",
" commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \"\n",
" \n",
" commandOPFile = \"-o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n",
" \n",
" command += commandRest + commandOPFile + \"incorrect_wo_exceptions.tsv\\n\"\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk --debug query -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n",
" --match '(node1)-[]->()' --where 'node1 in \" + str(list(excptns)).replace(\"'\",'\"') + \"' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \"\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk --debug ifnotexists -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect.tsv; \"\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk cat -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect_w_exceptions.tsv \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt; \\n\"\n",
" fOP.write(command)\n",
" \n",
" \n",
" cnt += 1\n",
"# except:\n",
"# print(\"Something failed for prop:\",prop)\n",
"if fOP:\n",
" fOP.close()"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "searching-individual",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2419"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cnt"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "silver-clarity",
"metadata": {},
"outputs": [],
"source": [
"# import os\n",
"# for i in range(1,26):\n",
"# os.system(\"screen -dm sh ../../propertiesSplitWRemoved/checkViolations/codepConst_MN_Validator_new2_\"+str(i)+\".sh\")"
]
},
{
"cell_type": "markdown",
"id": "prescription-access",
"metadata": {},
"source": [
"#### Version 3 - Mandatory"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "married-porter",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "932a7247db9b47568838f6219c1e2119",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/3147 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from tqdm.notebook import tqdm\n",
"import os.path\n",
"import os\n",
"\n",
"cnt = 0\n",
"fCnt = 0\n",
"\n",
"folderName = 'codependencyConstraint_Final'\n",
"subFolderName = \"Mand\"\n",
"shellFileSuffix = 'codepConst_M_Validator_new2_'\n",
"graph_cache_file_prefix = \"codep_new3_03_\"\n",
"\n",
"for prop in tqdm(dfItemRequires.index.unique()):\n",
"# try:\n",
" mandatory = []\n",
" suggestion = []\n",
" normal = []\n",
" prop = str(prop)\n",
" \n",
" for _, constraint in dfItemRequires.loc[[prop]].iterrows():\n",
" if type(constraint['P2316']) == list:\n",
" if constraint['P2316'][0] == 'Q21502408':\n",
" mandatory.append(constraint)\n",
" elif constraint['P2316'][0] == 'Q62026391':\n",
" suggestion.append(constraint)\n",
" else:\n",
" normal.append(constraint)\n",
" \n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv\")):\n",
" continue\n",
" \n",
" commandInit = \"{ time ( kgtk --debug query -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \"\n",
" commandOtherFiles = \"\"\n",
" commandMatch = \"--match '\"\n",
" commandMatchMoreFiles = [f\"{prop}: (node1)-[nodeProp]->(node2)\"]\n",
" commandWhere = \" --where '\"\n",
" commandWhere = []\n",
" \n",
" # Version 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n",
" constSet = mandatory\n",
" \n",
" if len(constSet) == 0:\n",
" continue\n",
" excptns = set()\n",
" for (rowNo, constraint) in enumerate(constSet):\n",
" prop2 = constraint['P2306']\n",
" \n",
" if type(prop2) != list:\n",
" continue\n",
" prop2 = prop2[0]\n",
" \n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop2 +\".tsv\")):\n",
" print(f\"File: ../../propertiesSplitWRemoved/claims.{prop2}.tsv does not exist\")\n",
" continue\n",
" \n",
" commandOtherFiles += \"../../propertiesSplitWRemoved/claims.\"+ prop2 +\".tsv \"\n",
" if type(constraint['P2303']) == list: # Exceptions present\n",
" if len(excptns) == 0:\n",
" excptns = set(constraint['P2303'])\n",
" else:\n",
" excptns = excptns.intersection(set(constraint['P2303']))\n",
" if type(constraint['P2305']) == list:\n",
" commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->(node2_{prop2})\"]\n",
" commandWhere += [\"node2_\" + prop2 + \" in \" + str(list(constraint['P2305'])).replace(\"'\",'\"')]\n",
" else:\n",
" commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->()\"]\n",
"# print(commandMatchMoreFiles)\n",
" if len(commandWhere) == 0:\n",
" command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\"\n",
" else:\n",
" command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\" + \" --where '\"+(\" and \".join(commandWhere))+\"'\"\n",
" \n",
" if cnt % 100 == 0:\n",
" if fOP:\n",
" fOP.close()\n",
" fCnt += 1\n",
" fOP = open(\"../../propertiesSplitWRemoved/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n",
" \n",
" if len(excptns) == 0:\n",
" commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \"\n",
" \n",
" commandOPFile = \"-o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n",
" \n",
" command += commandRest + commandOPFile + \"incorrect.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n",
" fOP.write(command)\n",
" else:\n",
" commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \"\n",
" \n",
" commandOPFile = \"-o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n",
" \n",
" command += commandRest + commandOPFile + \"incorrect_wo_exceptions.tsv\\n\"\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk --debug query -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n",
" --match '(node1)-[]->()' --where 'node1 in \" + str(list(excptns)).replace(\"'\",'\"') + \"' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \"\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk --debug ifnotexists -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect.tsv; \"\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk cat -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect_w_exceptions.tsv \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt; \\n\"\n",
" fOP.write(command)\n",
" \n",
" \n",
" cnt += 1\n",
"# except:\n",
"# print(\"Something failed for prop:\",prop)\n",
"if fOP:\n",
" fOP.close()"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "according-blackberry",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1089"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cnt"
]
},
{
"cell_type": "code",
"execution_count": 56,
"id": "extraordinary-drawing",
"metadata": {},
"outputs": [],
"source": [
"# import os\n",
"# for i in range(1,12):\n",
"# os.system(\"screen -dm sh ../../propertiesSplitWRemoved/checkViolations/codepConst_M_Validator_new2_\"+str(i)+\".sh\")"
]
},
{
"cell_type": "markdown",
"id": "subsequent-brown",
"metadata": {},
"source": [
"#### Version 4 - Normal"
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "operational-migration",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d81d5232c18940e59e50956651839125",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/3147 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File: ../../propertiesSplitWRemoved/claims.P8529.tsv does not exist\n"
]
}
],
"source": [
"from tqdm.notebook import tqdm\n",
"import os.path\n",
"import os\n",
"\n",
"cnt = 0\n",
"fCnt = 0\n",
"\n",
"folderName = 'codependencyConstraint_Final'\n",
"subFolderName = \"Normal\"\n",
"shellFileSuffix = 'codepConst_N_Validator_new2_'\n",
"graph_cache_file_prefix = \"codep_new3_04_\"\n",
"\n",
"for prop in tqdm(dfItemRequires.index.unique()):\n",
"# try:\n",
" mandatory = []\n",
" suggestion = []\n",
" normal = []\n",
" prop = str(prop)\n",
" \n",
" for _, constraint in dfItemRequires.loc[[prop]].iterrows():\n",
" if type(constraint['P2316']) == list:\n",
" if constraint['P2316'][0] == 'Q21502408':\n",
" mandatory.append(constraint)\n",
" elif constraint['P2316'][0] == 'Q62026391':\n",
" suggestion.append(constraint)\n",
" else:\n",
" normal.append(constraint)\n",
" \n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv\")):\n",
" continue\n",
" \n",
" commandInit = \"{ time ( kgtk --debug query -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \"\n",
" commandOtherFiles = \"\"\n",
" commandMatch = \"--match '\"\n",
" commandMatchMoreFiles = [f\"{prop}: (node1)-[nodeProp]->(node2)\"]\n",
" commandWhere = \" --where '\"\n",
" commandWhere = []\n",
" \n",
" # Version 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n",
" constSet = normal\n",
" \n",
" if len(constSet) == 0:\n",
" continue\n",
" excptns = set()\n",
" for (rowNo, constraint) in enumerate(constSet):\n",
" prop2 = constraint['P2306']\n",
" \n",
" if type(prop2) != list:\n",
" continue\n",
" prop2 = prop2[0]\n",
" \n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop2 +\".tsv\")):\n",
" print(f\"File: ../../propertiesSplitWRemoved/claims.{prop2}.tsv does not exist\")\n",
" continue\n",
" \n",
" commandOtherFiles += \"../../propertiesSplitWRemoved/claims.\"+ prop2 +\".tsv \"\n",
" if type(constraint['P2303']) == list: # Exceptions present\n",
" if len(excptns) == 0:\n",
" excptns = set(constraint['P2303'])\n",
" else:\n",
" excptns = excptns.intersection(set(constraint['P2303']))\n",
" if type(constraint['P2305']) == list:\n",
" commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->(node2_{prop2})\"]\n",
" commandWhere += [\"node2_\" + prop2 + \" in \" + str(list(constraint['P2305'])).replace(\"'\",'\"')]\n",
" else:\n",
" commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->()\"]\n",
"# print(commandMatchMoreFiles)\n",
" if len(commandWhere) == 0:\n",
" command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\"\n",
" else:\n",
" command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\" + \" --where '\"+(\" and \".join(commandWhere))+\"'\"\n",
" \n",
" if cnt % 100 == 0:\n",
" if fOP:\n",
" fOP.close()\n",
" fCnt += 1\n",
" fOP = open(\"../../propertiesSplitWRemoved/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n",
" \n",
" if len(excptns) == 0:\n",
" commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \"\n",
" \n",
" commandOPFile = \"-o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n",
" \n",
" command += commandRest + commandOPFile + \"incorrect.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n",
" fOP.write(command)\n",
" else:\n",
" commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \"\n",
" \n",
" commandOPFile = \"-o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n",
" \n",
" command += commandRest + commandOPFile + \"incorrect_wo_exceptions.tsv\\n\"\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk --debug query -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n",
" --match '(node1)-[]->()' --where 'node1 in \" + str(list(excptns)).replace(\"'\",'\"') + \"' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \"\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk --debug ifnotexists -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect.tsv; \"\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk cat -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect_w_exceptions.tsv \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt; \\n\"\n",
" fOP.write(command)\n",
" \n",
" \n",
" cnt += 1\n",
"# except:\n",
"# print(\"Something failed for prop:\",prop)\n",
"if fOP:\n",
" fOP.close()"
]
},
{
"cell_type": "code",
"execution_count": 58,
"id": "harmful-binary",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1925"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cnt"
]
},
{
"cell_type": "code",
"execution_count": 59,
"id": "advance-married",
"metadata": {},
"outputs": [],
"source": [
"# import os\n",
"# for i in range(1,21):\n",
"# os.system(\"screen -dm sh ../../propertiesSplitWRemoved/checkViolations/codepConst_N_Validator_new2_\"+str(i)+\".sh\")"
]
},
{
"cell_type": "markdown",
"id": "ranging-journal",
"metadata": {},
"source": [
"#### Version 5 - Suggestion"
]
},
{
"cell_type": "code",
"execution_count": 60,
"id": "missing-jordan",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "174a69094d0b4d30aeeba66e2eb28a5c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/3147 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File: ../../propertiesSplitWRemoved/claims.P8299.tsv does not exist\n",
"File: ../../propertiesSplitWRemoved/claims.P7118.tsv does not exist\n",
"File: ../../propertiesSplitWRemoved/claims.P7119.tsv does not exist\n"
]
}
],
"source": [
"from tqdm.notebook import tqdm\n",
"import os.path\n",
"import os\n",
"\n",
"cnt = 0\n",
"fCnt = 0\n",
"\n",
"folderName = 'codependencyConstraint_Final'\n",
"subFolderName = \"Suggestion\"\n",
"shellFileSuffix = 'codepConst_S_Validator_new_3_'\n",
"graph_cache_file_prefix = \"codep_new4_05_\"\n",
"\n",
"fOP = None\n",
"\n",
"for prop in tqdm(dfItemRequires.index.unique()):\n",
"# try:\n",
" mandatory = []\n",
" suggestion = []\n",
" normal = []\n",
" prop = str(prop)\n",
" \n",
" for _, constraint in dfItemRequires.loc[[prop]].iterrows():\n",
" if type(constraint['P2316']) == list:\n",
" if constraint['P2316'][0] == 'Q21502408':\n",
" mandatory.append(constraint)\n",
" elif constraint['P2316'][0] == 'Q62026391':\n",
" suggestion.append(constraint)\n",
" else:\n",
" normal.append(constraint)\n",
" \n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv\")):\n",
" continue\n",
" \n",
" commandInit = \"{ time ( kgtk --debug query -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \"\n",
" commandOtherFiles = \"\"\n",
" commandMatch = \"--match '\"\n",
" commandMatchMoreFiles = [f\"{prop}: (node1)-[nodeProp]->(node2)\"]\n",
" commandWhere = \" --where '\"\n",
" commandWhere = []\n",
" \n",
" # Version 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n",
" constSet = suggestion\n",
" \n",
" if len(constSet) == 0:\n",
" continue\n",
" excptns = set()\n",
" for (rowNo, constraint) in enumerate(constSet):\n",
" prop2 = constraint['P2306']\n",
" \n",
" if type(prop2) != list:\n",
" continue\n",
" prop2 = prop2[0]\n",
" \n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop2 +\".tsv\")):\n",
" print(f\"File: ../../propertiesSplitWRemoved/claims.{prop2}.tsv does not exist\")\n",
" continue\n",
" \n",
" commandOtherFiles += \"../../propertiesSplitWRemoved/claims.\"+ prop2 +\".tsv \"\n",
" if type(constraint['P2303']) == list: # Exceptions present\n",
" if len(excptns) == 0:\n",
" excptns = set(constraint['P2303'])\n",
" else:\n",
" excptns = excptns.intersection(set(constraint['P2303']))\n",
" if type(constraint['P2305']) == list:\n",
" commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->(node2_{prop2})\"]\n",
" commandWhere += [\"node2_\" + prop2 + \" in \" + str(list(constraint['P2305'])).replace(\"'\",'\"')]\n",
" else:\n",
" commandMatchMoreFiles += [f\"{prop2}: (node1)-[]->()\"]\n",
"# print(commandMatchMoreFiles)\n",
" if len(commandWhere) == 0:\n",
" command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\"\n",
" else:\n",
" command = commandInit + commandOtherFiles + commandMatch + (\", \".join(commandMatchMoreFiles)) + \"'\" + \" --where '\"+(\" and \".join(commandWhere))+\"'\"\n",
" \n",
" if cnt % 100 == 0:\n",
" if fOP:\n",
" fOP.close()\n",
" fCnt += 1\n",
" fOP = open(\"../../propertiesSplitWRemoved/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n",
" \n",
" if len(excptns) == 0:\n",
" commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \"\n",
" \n",
" commandOPFile = \"-o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n",
" \n",
" command += commandRest + commandOPFile + \"incorrect.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n",
" fOP.write(command)\n",
" else:\n",
" commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \"\n",
" \n",
" commandOPFile = \"-o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n",
" \n",
" command += commandRest + commandOPFile + \"incorrect_wo_exceptions.tsv\\n\"\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk --debug query -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n",
" --match '(node1)-[]->()' --where 'node1 in \" + str(list(excptns)).replace(\"'\",'\"') + \"' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \"\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk --debug ifnotexists -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect.tsv; \"\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk cat -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect_w_exceptions.tsv \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/timeLog_\" + shellFileSuffix + str(fCnt) + \".txt; \\n\"\n",
" fOP.write(command)\n",
" \n",
" \n",
" cnt += 1\n",
"# except:\n",
"# print(\"Something failed for prop:\",prop)\n",
"if fOP:\n",
" fOP.close()"
]
},
{
"cell_type": "code",
"execution_count": 61,
"id": "soviet-forth",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"312"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cnt"
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "racial-stationery",
"metadata": {},
"outputs": [],
"source": [
"# import os\n",
"# for i in range(1,5):\n",
"# os.system(\"screen -dm sh ../../propertiesSplitWRemoved/checkViolations/codepConst_S_Validator_new_3_\"+str(i)+\".sh\")"
]
},
{
"cell_type": "markdown",
"id": "structural-envelope",
"metadata": {},
"source": [
"### Merge all correct/incorrect outputs"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "joined-invention",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "57dcbdd4c8014c9288dbb92b331a05a6",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# import os\n",
"# from tqdm.notebook import tqdm\n",
"\n",
"# for folder in tqdm(iter(['Mand_Sugg_Normal', 'Mand_Normal', 'Mand', 'Normal'])):\n",
"# folderPath = \"../../allConstraintsAnalysisWRemoved/codependencyConstraint/\" + folder + \"/\"\n",
"# correct_files_list = \" \".join([folderPath + f for f in filter(lambda f: \".correct.\" in f, os.listdir(folderPath))])\n",
"# incorrect_files_list = \" \".join([folderPath + f for f in filter(lambda f: \".incorrect.\" in f, os.listdir(folderPath))])\n",
"# # print(files_list)\n",
"# os.system(\"{ kgtk cat -i \"+ correct_files_list + \" -o \"+folderPath+\"claims.all.correctSuperSet.tsv -v True; } 2> \"+folderPath+\"claims.all.correctSuperSet.log\")\n",
"# os.system(\"{ kgtk cat -i \"+ incorrect_files_list + \" -o \"+folderPath+\"claims.all.incorrectSuperSet.tsv -v True; } 2> \"+folderPath+\"claims.all.incorrectSuperSet.log\")"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "stopped-bolivia",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "68395f72036a469fad8908d916303bcd",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# import os\n",
"# from tqdm.notebook import tqdm\n",
"\n",
"# for folder in tqdm(iter(['Mand_Sugg_Normal', 'Mand_Normal', 'Mand', 'Normal'])):\n",
"# folderPath = \"../../allConstraintsAnalysisWRemoved/codependencyConstraint_Final/\" + folder + \"/\"\n",
"# correct_files_list = \" \".join([folderPath + f for f in filter(lambda f: \".correct.\" in f, os.listdir(folderPath))])\n",
"# incorrect_files_list = \" \".join([folderPath + f for f in filter(lambda f: \".incorrect.\" in f, os.listdir(folderPath))])\n",
"# # print(files_list)\n",
"# os.system(\"{ kgtk cat -i \"+ correct_files_list + \" -o \"+folderPath+\"claims.all.correctSuperSet.tsv; } 2> \"+folderPath+\"claims.all.correctSuperSet.log\")\n",
"# os.system(\"{ kgtk cat -i \"+ incorrect_files_list + \" -o \"+folderPath+\"claims.all.incorrectSuperSet.tsv; } 2> \"+folderPath+\"claims.all.incorrectSuperSet.log\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "criminal-central",
"metadata": {},
"outputs": [],
"source": [
"# for folder in tqdm(iter(['Mand_Sugg_Normal', 'Mand_Normal', 'Mand', 'Normal'])):\n",
"# folderPath = \"../../allConstraintsAnalysisWRemoved/codependencyConstraint/\" + folder + \"/\"\n",
"# folderPathNew = \"../../allConstraintsAnalysisWRemoved/codependencyConstraint_Final/\" + folder + \"/\"\n",
"# os.system(f\"screen -dm kgtk ifnotexists -i {folderPathNew}claims.all.correctSuperSet.tsv --filter-on {folderPath}claims.all.correctSuperSet.tsv -o {folderPathNew}claims.all.correctSuperSet.diff.tsv\")\n",
"# os.system(f\"screen -dm kgtk ifnotexists -i {folderPathNew}claims.all.incorrectSuperSet.tsv --filter-on {folderPath}claims.all.incorrectSuperSet.tsv -o {folderPathNew}claims.all.incorrectSuperSet.diff.tsv\")\n",
" "
]
},
{
"cell_type": "markdown",
"id": "homeless-pleasure",
"metadata": {},
"source": [
"### Analyze Violations"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "welcome-dependence",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "22a3c57a824e437b9c097ce45f245631",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "7dd9536a9ed647de9171b7e41388b861",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/5781 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ad21da09d00b46d9a1f5e7ab5e7401f1",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/5486 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f3ac9d0d591b4a429cfcdcda9b6d0530",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/2193 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "72b073aa981b47acb278ff698465121e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/4483 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b73b08dc91654c599ded7bd32878e9c8",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/690 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import os\n",
"from tqdm.notebook import tqdm\n",
"\n",
"codepConstViolations = {}\n",
"\n",
"def countLines(fname):\n",
" cnt = -1\n",
" with open(fname, 'r') as f:\n",
" for line in f:\n",
" cnt += 1\n",
" return cnt\n",
"\n",
"codepConstViolations = {}\n",
"codepConstPropList = set()\n",
"\n",
"# codepConstViolationsSummary = {}\n",
"\n",
"for folder in tqdm(iter(['Mand_Sugg_Normal', 'Mand_Normal', 'Mand', 'Normal','Suggestion'])):\n",
" filePath = \"../../allConstraintsAnalysisWRemoved/codependencyConstraint_Final/\"+folder+\"/\"\n",
" for filename in tqdm(os.listdir(filePath)):\n",
" prop = filename.split(\".\")[1]\n",
" correctness = filename.split(\".\")[2]\n",
" if correctness not in ['correct','incorrect']:\n",
" continue\n",
" codepConstPropList.add(prop)\n",
" count1 = countLines(filePath+filename)\n",
" if folder not in codepConstViolations:\n",
" codepConstViolations[folder] = {}\n",
" if prop not in codepConstViolations[folder]:\n",
" codepConstViolations[folder][prop] = {'correct': 0, 'incorrect': 0, 'paths': []}\n",
" codepConstViolations[folder][prop][correctness] = count1\n",
" codepConstViolations[folder][prop]['paths'].append(filePath+filename)\n",
" \n",
"# if folder not in codepConstViolationsSummary:\n",
"# codepConstViolationsSummary[folder] = {'correct': 0, 'incorrect': 0}\n",
"# codepConstViolationsSummary[folder][correctness] += count1"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "heated-astrology",
"metadata": {},
"outputs": [],
"source": [
"codepConstViolationsSummary = {}\n",
"for folder in codepConstViolations.keys():\n",
" for prop in codepConstViolations[folder].keys():\n",
" if folder not in codepConstViolationsSummary:\n",
" codepConstViolationsSummary[folder] = {'correct': 0, 'incorrect': 0, 'propCount': 0}\n",
" codepConstViolationsSummary[folder]['correct'] += codepConstViolations[folder][prop]['correct']\n",
" codepConstViolationsSummary[folder]['incorrect'] += codepConstViolations[folder][prop]['incorrect']\n",
" codepConstViolationsSummary[folder]['propCount'] += 1"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "grateful-catalog",
"metadata": {},
"outputs": [],
"source": [
"for elem in codepConstViolationsSummary.keys():\n",
" codepConstViolationsSummary[elem]['total'] = codepConstViolationsSummary[elem]['correct'] + codepConstViolationsSummary[elem]['incorrect']\n",
" codepConstViolationsSummary[elem]['percIncorrect'] = codepConstViolationsSummary[elem]['incorrect'] / codepConstViolationsSummary[elem]['total'] * 100"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "physical-soviet",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Mand_Sugg_Normal': {'correct': 310335209,\n",
" 'incorrect': 6204247,\n",
" 'propCount': 2538,\n",
" 'total': 316539456,\n",
" 'percIncorrect': 1.9600232711589676},\n",
" 'Mand_Normal': {'correct': 280118891,\n",
" 'incorrect': 3724480,\n",
" 'propCount': 2419,\n",
" 'total': 283843371,\n",
" 'percIncorrect': 1.3121602899790814},\n",
" 'Mand': {'correct': 5721696,\n",
" 'incorrect': 80247,\n",
" 'propCount': 1089,\n",
" 'total': 5801943,\n",
" 'percIncorrect': 1.3831056251328218},\n",
" 'Normal': {'correct': 279065966,\n",
" 'incorrect': 3646780,\n",
" 'propCount': 1925,\n",
" 'total': 282712746,\n",
" 'percIncorrect': 1.2899241550290768},\n",
" 'Suggestion': {'correct': 31515015,\n",
" 'incorrect': 2587324,\n",
" 'propCount': 312,\n",
" 'total': 34102339,\n",
" 'percIncorrect': 7.586940004320525}}"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstViolationsSummary"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "permanent-triumph",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "c69632919d004e0cabb3400bda4eb036",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/3147 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"File: ../../propertiesSplitWRemoved/claims.P8299.tsv does not exist\n",
"File: ../../propertiesSplitWRemoved/claims.P8529.tsv does not exist\n",
"File: ../../propertiesSplitWRemoved/claims.P7118.tsv does not exist\n",
"File: ../../propertiesSplitWRemoved/claims.P7119.tsv does not exist\n"
]
}
],
"source": [
"mandatoryPropCount = 0\n",
"suggestionPropCount = 0\n",
"normalPropCount = 0\n",
"for prop in tqdm(dfItemRequires.index.unique()):\n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv\")):\n",
" continue\n",
" prop = str(prop)\n",
" hasMandatory = False\n",
" hasSuggestion = False\n",
" hasNormal = False\n",
"\n",
" for _, constraint in dfItemRequires.loc[[prop]].iterrows():\n",
" prop2 = constraint['P2306']\n",
" \n",
" if type(prop2) != list:\n",
" continue\n",
" prop2 = prop2[0]\n",
"\n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop2 +\".tsv\")):\n",
" print(f\"File: ../../propertiesSplitWRemoved/claims.{prop2}.tsv does not exist\")\n",
" continue\n",
" \n",
" if type(constraint['P2316']) == list:\n",
" if constraint['P2316'][0] == 'Q21502408':\n",
" hasMandatory = True\n",
" elif constraint['P2316'][0] == 'Q62026391':\n",
" hasSuggestion = True\n",
" else:\n",
" hasNormal = True\n",
" if hasMandatory:\n",
" mandatoryPropCount += 1\n",
" if hasSuggestion:\n",
" suggestionPropCount += 1\n",
" if hasNormal:\n",
" normalPropCount += 1"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "boring-tooth",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"No. of props having at least 1 mandatory constraint: 1088\n",
"No. of props having at least 1 suggestion constraint: 309\n",
"No. of props having at least 1 normal constraint: 1924\n"
]
}
],
"source": [
"print(f\"No. of props having at least 1 mandatory constraint: {mandatoryPropCount}\")\n",
"print(f\"No. of props having at least 1 suggestion constraint: {suggestionPropCount}\")\n",
"print(f\"No. of props having at least 1 normal constraint: {normalPropCount}\")"
]
},
{
"cell_type": "markdown",
"id": "loving-double",
"metadata": {},
"source": [
"#### Version 1 - Mand Sugg Normal"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "beautiful-xerox",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"codepConstDF1 = pd.DataFrame(codepConstViolations['Mand_Sugg_Normal']).T"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "genetic-venezuela",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" \n",
" \n",
" \n",
" \n",
" P6307 \n",
" 4 \n",
" 2 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P3225 \n",
" 31 \n",
" 308 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P1336 \n",
" 232 \n",
" 999 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P8810 \n",
" 1 \n",
" 0 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P6670 \n",
" 7 \n",
" 3 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" P1884 \n",
" 8913 \n",
" 23 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P1886 \n",
" 26 \n",
" 3 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P1888 \n",
" 128 \n",
" 48 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P1894 \n",
" 38 \n",
" 48 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P1895 \n",
" 457 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
"
\n",
"
2538 rows × 3 columns
\n",
"
"
],
"text/plain": [
" correct incorrect paths\n",
"P6307 4 2 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P3225 31 308 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P1336 232 999 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P8810 1 0 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P6670 7 3 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"... ... ... ...\n",
"P1884 8913 23 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P1886 26 3 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P1888 128 48 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P1894 38 48 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P1895 457 4 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"\n",
"[2538 rows x 3 columns]"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF1"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "powered-residence",
"metadata": {},
"outputs": [],
"source": [
"codepConstDF1['violation_ratio'] = codepConstDF1.apply(lambda p: p.incorrect / (p.correct + p.incorrect), axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "chinese-pressing",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P4674 \n",
" 0 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P4645 \n",
" 0 \n",
" 6 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P4334 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P507 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P2304 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P2586 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P7948 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P5745 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P7263 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P6645 \n",
" 0 \n",
" 2 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P6759 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P1555 \n",
" 0 \n",
" 5 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P8229 \n",
" 0 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P8280 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P1837 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P4674 0 4 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P4645 0 6 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P4334 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P507 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2304 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2586 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P7948 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P5745 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P7263 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P6645 0 2 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P6759 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1555 0 5 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P8229 0 4 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P8280 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1837 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"\n",
" violation_ratio \n",
"P4674 1.0 \n",
"P4645 1.0 \n",
"P4334 1.0 \n",
"P507 1.0 \n",
"P2304 1.0 \n",
"P2586 1.0 \n",
"P7948 1.0 \n",
"P5745 1.0 \n",
"P7263 1.0 \n",
"P6645 1.0 \n",
"P6759 1.0 \n",
"P1555 1.0 \n",
"P8229 1.0 \n",
"P8280 1.0 \n",
"P1837 1.0 "
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF1.sort_values(by=['violation_ratio'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "armed-constitution",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['../../allConstraintsAnalysisWRemoved/codependencyConstraint_Final/Mand_Sugg_Normal/claims.P2302.correct.tsv',\n",
" '../../allConstraintsAnalysisWRemoved/codependencyConstraint_Final/Mand_Sugg_Normal/claims.P2302.incorrect.tsv']"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(codepConstDF1.loc['P2302']['paths'])"
]
},
{
"cell_type": "code",
"execution_count": 56,
"id": "continued-desire",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"id\tnode1\tlabel\tnode2\trank\tnode2;wikidatatype\r\n",
"P10-P2302-Q21502404-d012aef4-0\tP10\tP2302\tQ21502404\tnormal\twikibase-item\r\n",
"P10-P2302-Q21510851-5224fe0b-0\tP10\tP2302\tQ21510851\tnormal\twikibase-item\r\n",
"P10-P2302-Q21510852-dde2f0ce-0\tP10\tP2302\tQ21510852\tnormal\twikibase-item\r\n",
"P10-P2302-Q52004125-d0288d06-0\tP10\tP2302\tQ52004125\tnormal\twikibase-item\r\n",
"P10-P2302-Q53869507-974ce3b1-0\tP10\tP2302\tQ53869507\tnormal\twikibase-item\r\n",
"P1000-P2302-Q21510856-b2772a67-0\tP1000\tP2302\tQ21510856\tnormal\twikibase-item\r\n",
"P1000-P2302-Q21510865-1f5093e9-0\tP1000\tP2302\tQ21510865\tnormal\twikibase-item\r\n",
"P1000-P2302-Q53869507-36dbee67-0\tP1000\tP2302\tQ53869507\tnormal\twikibase-item\r\n",
"P1001-P2302-Q21502838-3cc7ade2-0\tP1001\tP2302\tQ21502838\tnormal\twikibase-item\r\n"
]
}
],
"source": [
"!head ../../allConstraintsAnalysisWRemoved/codependencyConstraint_Final/Mand_Sugg_Normal/claims.P2302.incorrect.tsv"
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "demonstrated-debut",
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P234 \n",
" 7232 \n",
" 997624 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.992803 \n",
" \n",
" \n",
" P734 \n",
" 2119055 \n",
" 738534 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.258447 \n",
" \n",
" \n",
" P2214 \n",
" 2989348 \n",
" 721476 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.194425 \n",
" \n",
" \n",
" P433 \n",
" 31113458 \n",
" 436934 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.013849 \n",
" \n",
" \n",
" P195 \n",
" 1150231 \n",
" 401686 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.258832 \n",
" \n",
" \n",
" P569 \n",
" 6926852 \n",
" 267556 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.037189 \n",
" \n",
" \n",
" P131 \n",
" 11274319 \n",
" 200519 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.017475 \n",
" \n",
" \n",
" P275 \n",
" 7295 \n",
" 163856 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.957377 \n",
" \n",
" \n",
" P2860 \n",
" 174842113 \n",
" 152425 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.000871 \n",
" \n",
" \n",
" P570 \n",
" 3471930 \n",
" 105652 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.029532 \n",
" \n",
" \n",
" P1435 \n",
" 2121637 \n",
" 92401 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.041734 \n",
" \n",
" \n",
" P2017 \n",
" 86770 \n",
" 90445 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.510369 \n",
" \n",
" \n",
" P1376 \n",
" 2806 \n",
" 79392 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.965863 \n",
" \n",
" \n",
" P7902 \n",
" 12924 \n",
" 68302 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.840888 \n",
" \n",
" \n",
" P1922 \n",
" 30636 \n",
" 63745 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.675401 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P234 7232 997624 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P734 2119055 738534 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2214 2989348 721476 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P433 31113458 436934 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P195 1150231 401686 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P569 6926852 267556 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P131 11274319 200519 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P275 7295 163856 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2860 174842113 152425 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P570 3471930 105652 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1435 2121637 92401 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2017 86770 90445 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1376 2806 79392 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P7902 12924 68302 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1922 30636 63745 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"\n",
" violation_ratio \n",
"P234 0.992803 \n",
"P734 0.258447 \n",
"P2214 0.194425 \n",
"P433 0.013849 \n",
"P195 0.258832 \n",
"P569 0.037189 \n",
"P131 0.017475 \n",
"P275 0.957377 \n",
"P2860 0.000871 \n",
"P570 0.029532 \n",
"P1435 0.041734 \n",
"P2017 0.510369 \n",
"P1376 0.965863 \n",
"P7902 0.840888 \n",
"P1922 0.675401 "
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF1.sort_values(by=['incorrect'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 58,
"id": "developed-zimbabwe",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"count 2538.000000\n",
"mean 0.270460\n",
"std 0.348561\n",
"min 0.000000\n",
"25% 0.000000\n",
"50% 0.066600\n",
"75% 0.500000\n",
"max 1.000000\n",
"Name: violation_ratio, dtype: float64"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF1['violation_ratio'].describe()"
]
},
{
"cell_type": "code",
"execution_count": 59,
"id": "unknown-johnston",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Co-Dependency Constraint - Version 1 - Violation Ratios')"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"codepConstDF1['violation_ratio'].plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 1 - Violation Ratios\")"
]
},
{
"cell_type": "code",
"execution_count": 60,
"id": "exceptional-dakota",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Co-Dependency Constraint - Version 1 - Violation Ratios <= 0.5')"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"codepConstDF1[codepConstDF1['violation_ratio'] <= 0.5].violation_ratio.plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 1 - Violation Ratios <= 0.5\")"
]
},
{
"cell_type": "code",
"execution_count": 61,
"id": "interior-joseph",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"No. of properties whose violation ratio is greater than mean: 0/2538\n"
]
}
],
"source": [
"print(f\"No. of properties whose violation ratio is greater than mean: {sum(codepConstDF1['violation_ratio'] >= 3.539484)}/{len(codepConstDF1)}\")"
]
},
{
"cell_type": "markdown",
"id": "greater-genetics",
"metadata": {},
"source": [
"#### Version 2 - Mand Normal"
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "constant-chance",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"codepConstDF2 = pd.DataFrame(codepConstViolations['Mand_Normal']).T"
]
},
{
"cell_type": "code",
"execution_count": 63,
"id": "included-adjustment",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" \n",
" \n",
" \n",
" \n",
" P1006 \n",
" 4024 \n",
" 403 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P5878 \n",
" 234 \n",
" 0 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P5527 \n",
" 1 \n",
" 0 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P1949 \n",
" 19 \n",
" 2 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P2458 \n",
" 58 \n",
" 3 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" P1935 \n",
" 1499 \n",
" 49 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P1937 \n",
" 199 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P1938 \n",
" 254 \n",
" 0 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P1939 \n",
" 907 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P1940 \n",
" 7 \n",
" 0 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
"
\n",
"
2419 rows × 3 columns
\n",
"
"
],
"text/plain": [
" correct incorrect paths\n",
"P1006 4024 403 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P5878 234 0 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P5527 1 0 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P1949 19 2 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P2458 58 3 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"... ... ... ...\n",
"P1935 1499 49 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P1937 199 4 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P1938 254 0 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P1939 907 1 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P1940 7 0 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"\n",
"[2419 rows x 3 columns]"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF2"
]
},
{
"cell_type": "code",
"execution_count": 64,
"id": "fundamental-knowing",
"metadata": {},
"outputs": [],
"source": [
"codepConstDF2['violation_ratio'] = codepConstDF2.apply(lambda p: p.incorrect / (p.correct + p.incorrect), axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 65,
"id": "harmful-discipline",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P4668 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P6189 \n",
" 0 \n",
" 2 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P2586 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P3796 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P2863 \n",
" 0 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P8888 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P4727 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P5783 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P2489 \n",
" 0 \n",
" 12 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P2309 \n",
" 0 \n",
" 55 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P6645 \n",
" 0 \n",
" 2 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P2310 \n",
" 0 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P7882 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P8769 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
" P3692 \n",
" 0 \n",
" 96 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P4668 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P6189 0 2 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2586 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P3796 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2863 0 4 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P8888 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P4727 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P5783 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2489 0 12 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2309 0 55 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P6645 0 2 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2310 0 4 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P7882 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P8769 0 1 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P3692 0 96 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"\n",
" violation_ratio \n",
"P4668 1.0 \n",
"P6189 1.0 \n",
"P2586 1.0 \n",
"P3796 1.0 \n",
"P2863 1.0 \n",
"P8888 1.0 \n",
"P4727 1.0 \n",
"P5783 1.0 \n",
"P2489 1.0 \n",
"P2309 1.0 \n",
"P6645 1.0 \n",
"P2310 1.0 \n",
"P7882 1.0 \n",
"P8769 1.0 \n",
"P3692 1.0 "
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF2.sort_values(by=['violation_ratio'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 66,
"id": "unlikely-chamber",
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P234 \n",
" 7232 \n",
" 997624 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.992803 \n",
" \n",
" \n",
" P2214 \n",
" 2989348 \n",
" 721476 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.194425 \n",
" \n",
" \n",
" P433 \n",
" 31113458 \n",
" 436934 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.013849 \n",
" \n",
" \n",
" P275 \n",
" 7295 \n",
" 163856 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.957377 \n",
" \n",
" \n",
" P2860 \n",
" 174842113 \n",
" 152425 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.000871 \n",
" \n",
" \n",
" P1435 \n",
" 2121637 \n",
" 92401 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.041734 \n",
" \n",
" \n",
" P7902 \n",
" 20387 \n",
" 60838 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.749006 \n",
" \n",
" \n",
" P708 \n",
" 45718 \n",
" 57276 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.556110 \n",
" \n",
" \n",
" P197 \n",
" 122018 \n",
" 52917 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.302495 \n",
" \n",
" \n",
" P1598 \n",
" 40600 \n",
" 49329 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.548533 \n",
" \n",
" \n",
" P1111 \n",
" 1 \n",
" 46803 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.999979 \n",
" \n",
" \n",
" P856 \n",
" 1451949 \n",
" 43599 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.029153 \n",
" \n",
" \n",
" P2248 \n",
" 4025 \n",
" 41608 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.911796 \n",
" \n",
" \n",
" P2325 \n",
" 4079 \n",
" 40619 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.908743 \n",
" \n",
" \n",
" P2243 \n",
" 4035 \n",
" 36870 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.901357 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P234 7232 997624 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2214 2989348 721476 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P433 31113458 436934 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P275 7295 163856 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2860 174842113 152425 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1435 2121637 92401 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P7902 20387 60838 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P708 45718 57276 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P197 122018 52917 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1598 40600 49329 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1111 1 46803 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P856 1451949 43599 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2248 4025 41608 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2325 4079 40619 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2243 4035 36870 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"\n",
" violation_ratio \n",
"P234 0.992803 \n",
"P2214 0.194425 \n",
"P433 0.013849 \n",
"P275 0.957377 \n",
"P2860 0.000871 \n",
"P1435 0.041734 \n",
"P7902 0.749006 \n",
"P708 0.556110 \n",
"P197 0.302495 \n",
"P1598 0.548533 \n",
"P1111 0.999979 \n",
"P856 0.029153 \n",
"P2248 0.911796 \n",
"P2325 0.908743 \n",
"P2243 0.901357 "
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF2.sort_values(by=['incorrect'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"id": "violent-match",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"count 2419.000000\n",
"mean 0.244716\n",
"std 0.335376\n",
"min 0.000000\n",
"25% 0.000000\n",
"50% 0.041734\n",
"75% 0.420357\n",
"max 1.000000\n",
"Name: violation_ratio, dtype: float64"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF2['violation_ratio'].describe()"
]
},
{
"cell_type": "code",
"execution_count": 68,
"id": "educational-thickness",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Co-Dependency Constraint - Version 2 - Violation Ratios')"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"codepConstDF2['violation_ratio'].plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 2 - Violation Ratios\")"
]
},
{
"cell_type": "code",
"execution_count": 69,
"id": "latin-mitchell",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Co-Dependency Constraint - Version 2 - Violation Ratios <= 0.5')"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"codepConstDF2[codepConstDF2['violation_ratio'] <= 0.5].violation_ratio.plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 2 - Violation Ratios <= 0.5\")"
]
},
{
"cell_type": "code",
"execution_count": 70,
"id": "asian-forwarding",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"No. of properties whose violation ratio is greater than mean: 0/2419\n"
]
}
],
"source": [
"print(f\"No. of properties whose violation ratio is greater than mean: {sum(codepConstDF2['violation_ratio'] >= 2.290915)}/{len(codepConstDF2)}\")"
]
},
{
"cell_type": "markdown",
"id": "destroyed-flash",
"metadata": {},
"source": [
"#### Version 3 - Mand"
]
},
{
"cell_type": "code",
"execution_count": 71,
"id": "consecutive-plenty",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"codepConstDF3 = pd.DataFrame(codepConstViolations['Mand']).T"
]
},
{
"cell_type": "code",
"execution_count": 72,
"id": "digital-mileage",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" \n",
" \n",
" \n",
" \n",
" P721 \n",
" 32349 \n",
" 13 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P4019 \n",
" 11 \n",
" 0 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P3672 \n",
" 1 \n",
" 0 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P1808 \n",
" 53 \n",
" 2 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P2948 \n",
" 17 \n",
" 2 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" P1770 \n",
" 169 \n",
" 3 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P1787 \n",
" 2095 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P2946 \n",
" 341 \n",
" 181 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P1799 \n",
" 23 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P1800 \n",
" 20 \n",
" 6 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
"
\n",
"
1089 rows × 3 columns
\n",
"
"
],
"text/plain": [
" correct incorrect paths\n",
"P721 32349 13 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P4019 11 0 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P3672 1 0 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P1808 53 2 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P2948 17 2 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"... ... ... ...\n",
"P1770 169 3 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P1787 2095 1 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P2946 341 181 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P1799 23 1 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P1800 20 6 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"\n",
"[1089 rows x 3 columns]"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF3"
]
},
{
"cell_type": "code",
"execution_count": 73,
"id": "formed-battle",
"metadata": {},
"outputs": [],
"source": [
"codepConstDF3['violation_ratio'] = codepConstDF3.apply(lambda p: p.incorrect / p.correct if p.correct != 0 else p.incorrect/100, axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"id": "numerous-construction",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P3823 \n",
" 55 \n",
" 7348 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 133.600000 \n",
" \n",
" \n",
" P5051 \n",
" 2 \n",
" 79 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 39.500000 \n",
" \n",
" \n",
" P8613 \n",
" 2 \n",
" 43 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 21.500000 \n",
" \n",
" \n",
" P219 \n",
" 17 \n",
" 98 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 5.764706 \n",
" \n",
" \n",
" P2431 \n",
" 1 \n",
" 5 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 5.000000 \n",
" \n",
" \n",
" P2482 \n",
" 1 \n",
" 5 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 5.000000 \n",
" \n",
" \n",
" P2685 \n",
" 9 \n",
" 43 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 4.777778 \n",
" \n",
" \n",
" P3220 \n",
" 1 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 4.000000 \n",
" \n",
" \n",
" P4069 \n",
" 1 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 4.000000 \n",
" \n",
" \n",
" P1959 \n",
" 10 \n",
" 39 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 3.900000 \n",
" \n",
" \n",
" P2432 \n",
" 1 \n",
" 3 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 3.000000 \n",
" \n",
" \n",
" P7902 \n",
" 20387 \n",
" 60838 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 2.984157 \n",
" \n",
" \n",
" P3421 \n",
" 6 \n",
" 15 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 2.500000 \n",
" \n",
" \n",
" P778 \n",
" 38 \n",
" 91 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 2.394737 \n",
" \n",
" \n",
" P2252 \n",
" 30 \n",
" 69 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 2.300000 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P3823 55 7348 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P5051 2 79 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P8613 2 43 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P219 17 98 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2431 1 5 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2482 1 5 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2685 9 43 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P3220 1 4 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P4069 1 4 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1959 10 39 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2432 1 3 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P7902 20387 60838 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P3421 6 15 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P778 38 91 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2252 30 69 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"\n",
" violation_ratio \n",
"P3823 133.600000 \n",
"P5051 39.500000 \n",
"P8613 21.500000 \n",
"P219 5.764706 \n",
"P2431 5.000000 \n",
"P2482 5.000000 \n",
"P2685 4.777778 \n",
"P3220 4.000000 \n",
"P4069 4.000000 \n",
"P1959 3.900000 \n",
"P2432 3.000000 \n",
"P7902 2.984157 \n",
"P3421 2.500000 \n",
"P778 2.394737 \n",
"P2252 2.300000 "
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF3.sort_values(by=['violation_ratio'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 75,
"id": "identified-marble",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"correct 2935\n",
"incorrect 79\n",
"paths [../../allConstraintsAnalysisWRemoved/codepend...\n",
"violation_ratio 0.026917\n",
"Name: P1713, dtype: object"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF3.loc['P1713']"
]
},
{
"cell_type": "code",
"execution_count": 76,
"id": "established-mounting",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"id\tnode1\tlabel\tnode2\trank\tnode2;wikidatatype\r\n",
"Q4681882-P1713-d878eb-9fff460e-0\tQ4681882\tP1713\t\"https://heightnetworth.com/adele-givens-net-worth-2020/\"\tnormal\turl\r\n",
"Q1763529-P1713-c190308f-q1763529$ffe0aa48-c924-4913-ad50-343dc2d666f1-0\tQ1763529\tP1713\thttp://www.bundestag.de/bundestag/abgeordnete18/biografien/H/heck_stefan/258446\t\t\r\n",
"Q2571287-P1713-6ac225c1-q2571287$bb1e6912-f58f-4106-be9c-55ad68bde759-0\tQ2571287\tP1713\thttp://www.bundestag.de/bundestag/abgeordnete18/biografien/L/lorenz_wilfried/258666\t\t\r\n",
"Q41019201-P1713-16045f49-q41019201$f550afb5-9a1e-4e19-b3cf-7cacc61a2e9e-0\tQ41019201\tP1713\thttps://www.bundestag.de/abgeordnete/biografien/P/-/522580\t\t\r\n",
"Q41105197-P1713-5ed2f31e-q41105197$d493bc2d-023b-4e2f-babc-221a3e720054-0\tQ41105197\tP1713\thttps://www.bundestag.de/abgeordnete/biografien/S/-/523620\t\t\r\n",
"Q41160336-P1713-72b7c975-q41160336$7b946af4-7cb4-4dc8-8a98-6534fb729a4a-0\tQ41160336\tP1713\thttps://www.bundestag.de/abgeordnete/biografien/C/-/518870\t\t\r\n",
"Q41356018-P1713-02640366-q41356018$5e59f8fa-cb0a-4abe-9a90-ad9e82a474c4-0\tQ41356018\tP1713\thttps://www.bundestag.de/abgeordnete/biografien/O/-/522500\t\t\r\n",
"Q41435421-P1713-7c3cb808-q41435421$38660da2-d639-43fc-9adf-614771a29db9-0\tQ41435421\tP1713\thttps://www.bundestag.de/abgeordnete/biografien/M/muenz_volker/522234\t\t\r\n",
"Q29946731-P1713-c997a778-q29946731$5e3c92ab-a298-4fb6-a49c-8e57816275c4-0\tQ29946731\tP1713\thttps://www.bundestag.de/abgeordnete/biografien/R/-/522880\t\t\r\n"
]
}
],
"source": [
"!head ../../allConstraintsAnalysisWRemoved/codependencyConstraint_Final/Mand/claims.P1713.incorrect.tsv"
]
},
{
"cell_type": "code",
"execution_count": 77,
"id": "naval-functionality",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cat: ../../allConstraintsAnalysisWRemoved/codependencyConstraint/Mand/claims.P1713.incorrect.tsv: No such file or directory\r\n"
]
}
],
"source": [
"!cat ../../allConstraintsAnalysisWRemoved/codependencyConstraint/Mand/claims.P1713.incorrect.tsv"
]
},
{
"cell_type": "code",
"execution_count": 78,
"id": "imposed-bibliography",
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P7902 \n",
" 20387 \n",
" 60838 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 2.984157 \n",
" \n",
" \n",
" P3823 \n",
" 55 \n",
" 7348 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 133.600000 \n",
" \n",
" \n",
" P141 \n",
" 131232 \n",
" 3270 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.024918 \n",
" \n",
" \n",
" P428 \n",
" 2655 \n",
" 1223 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.460640 \n",
" \n",
" \n",
" P1087 \n",
" 3774635 \n",
" 1210 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.000321 \n",
" \n",
" \n",
" P3647 \n",
" 407 \n",
" 510 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.253071 \n",
" \n",
" \n",
" P7959 \n",
" 657006 \n",
" 322 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.000490 \n",
" \n",
" \n",
" P380 \n",
" 2151 \n",
" 296 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.137610 \n",
" \n",
" \n",
" P3963 \n",
" 5997 \n",
" 281 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.046857 \n",
" \n",
" \n",
" P3371 \n",
" 903 \n",
" 183 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.202658 \n",
" \n",
" \n",
" P2946 \n",
" 341 \n",
" 181 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.530792 \n",
" \n",
" \n",
" P359 \n",
" 5375 \n",
" 171 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.031814 \n",
" \n",
" \n",
" P3318 \n",
" 278 \n",
" 167 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.600719 \n",
" \n",
" \n",
" P8425 \n",
" 241 \n",
" 165 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.684647 \n",
" \n",
" \n",
" P1954 \n",
" 1377 \n",
" 164 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.119099 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P7902 20387 60838 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P3823 55 7348 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P141 131232 3270 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P428 2655 1223 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1087 3774635 1210 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P3647 407 510 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P7959 657006 322 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P380 2151 296 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P3963 5997 281 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P3371 903 183 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2946 341 181 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P359 5375 171 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P3318 278 167 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P8425 241 165 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1954 1377 164 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"\n",
" violation_ratio \n",
"P7902 2.984157 \n",
"P3823 133.600000 \n",
"P141 0.024918 \n",
"P428 0.460640 \n",
"P1087 0.000321 \n",
"P3647 1.253071 \n",
"P7959 0.000490 \n",
"P380 0.137610 \n",
"P3963 0.046857 \n",
"P3371 0.202658 \n",
"P2946 0.530792 \n",
"P359 0.031814 \n",
"P3318 0.600719 \n",
"P8425 0.684647 \n",
"P1954 0.119099 "
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF3.sort_values(by=['incorrect'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 79,
"id": "emotional-crown",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"count 1089.000000\n",
"mean 0.298588\n",
"std 4.291846\n",
"min 0.000000\n",
"25% 0.000000\n",
"50% 0.000000\n",
"75% 0.018405\n",
"max 133.600000\n",
"Name: violation_ratio, dtype: float64"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF3['violation_ratio'].describe()"
]
},
{
"cell_type": "code",
"execution_count": 80,
"id": "certain-freeze",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Co-Dependency Constraint - Version 3 - Violation Ratios')"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"codepConstDF3['violation_ratio'].plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 3 - Violation Ratios\")"
]
},
{
"cell_type": "code",
"execution_count": 81,
"id": "cooperative-ownership",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Co-Dependency Constraint - Version 3 - Violation Ratios <= 0.0005')"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"codepConstDF3[codepConstDF3['violation_ratio'] <= 0.0005].violation_ratio.plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 3 - Violation Ratios <= 0.0005\")"
]
},
{
"cell_type": "code",
"execution_count": 82,
"id": "studied-inclusion",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"No. of properties whose violation ratio is greater than mean: 44/1089\n"
]
}
],
"source": [
"print(f\"No. of properties whose violation ratio is greater than mean: {sum(codepConstDF3['violation_ratio'] >= 0.922928)}/{len(codepConstDF3)}\")"
]
},
{
"cell_type": "markdown",
"id": "protective-brazil",
"metadata": {},
"source": [
"#### Version 4 - Normal"
]
},
{
"cell_type": "code",
"execution_count": 83,
"id": "laughing-pressing",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"codepConstDF4 = pd.DataFrame(codepConstViolations['Normal']).T"
]
},
{
"cell_type": "code",
"execution_count": 84,
"id": "loving-swift",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" \n",
" \n",
" \n",
" \n",
" P1404 \n",
" 13 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P2100 \n",
" 364 \n",
" 97 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P3862 \n",
" 7 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P6769 \n",
" 31 \n",
" 0 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P4474 \n",
" 2 \n",
" 0 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" P8174 \n",
" 367 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P2778 \n",
" 1 \n",
" 2 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P5418 \n",
" 3 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P2783 \n",
" 26 \n",
" 0 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
" P8177 \n",
" 1 \n",
" 0 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" \n",
" \n",
"
\n",
"
1925 rows × 3 columns
\n",
"
"
],
"text/plain": [
" correct incorrect paths\n",
"P1404 13 1 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P2100 364 97 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P3862 7 1 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P6769 31 0 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P4474 2 0 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"... ... ... ...\n",
"P8174 367 1 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P2778 1 2 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P5418 3 1 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P2783 26 0 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"P8177 1 0 [../../allConstraintsAnalysisWRemoved/codepend...\n",
"\n",
"[1925 rows x 3 columns]"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF4"
]
},
{
"cell_type": "code",
"execution_count": 85,
"id": "north-christian",
"metadata": {},
"outputs": [],
"source": [
"codepConstDF4['violation_ratio'] = codepConstDF4.apply(lambda p: p.incorrect / p.correct if p.correct != 0 else p.incorrect/100, axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 86,
"id": "closing-causing",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P1111 \n",
" 1 \n",
" 46803 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 46803.000000 \n",
" \n",
" \n",
" P374 \n",
" 3 \n",
" 2542 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 847.333333 \n",
" \n",
" \n",
" P1116 \n",
" 8 \n",
" 3199 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 399.875000 \n",
" \n",
" \n",
" P769 \n",
" 5 \n",
" 1851 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 370.200000 \n",
" \n",
" \n",
" P2643 \n",
" 48 \n",
" 17084 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 355.916667 \n",
" \n",
" \n",
" P1283 \n",
" 13 \n",
" 3871 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 297.769231 \n",
" \n",
" \n",
" P2758 \n",
" 123 \n",
" 18919 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 153.813008 \n",
" \n",
" \n",
" P2637 \n",
" 2 \n",
" 295 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 147.500000 \n",
" \n",
" \n",
" P234 \n",
" 7232 \n",
" 997624 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 137.945796 \n",
" \n",
" \n",
" P1995 \n",
" 89 \n",
" 11360 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 127.640449 \n",
" \n",
" \n",
" P3156 \n",
" 3 \n",
" 365 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 121.666667 \n",
" \n",
" \n",
" P525 \n",
" 1 \n",
" 100 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 100.000000 \n",
" \n",
" \n",
" P852 \n",
" 46 \n",
" 4505 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 97.934783 \n",
" \n",
" \n",
" P597 \n",
" 105 \n",
" 7210 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 68.666667 \n",
" \n",
" \n",
" P562 \n",
" 7 \n",
" 449 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 64.142857 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P1111 1 46803 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P374 3 2542 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1116 8 3199 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P769 5 1851 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2643 48 17084 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1283 13 3871 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2758 123 18919 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2637 2 295 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P234 7232 997624 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1995 89 11360 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P3156 3 365 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P525 1 100 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P852 46 4505 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P597 105 7210 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P562 7 449 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"\n",
" violation_ratio \n",
"P1111 46803.000000 \n",
"P374 847.333333 \n",
"P1116 399.875000 \n",
"P769 370.200000 \n",
"P2643 355.916667 \n",
"P1283 297.769231 \n",
"P2758 153.813008 \n",
"P2637 147.500000 \n",
"P234 137.945796 \n",
"P1995 127.640449 \n",
"P3156 121.666667 \n",
"P525 100.000000 \n",
"P852 97.934783 \n",
"P597 68.666667 \n",
"P562 64.142857 "
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF4.sort_values(by=['violation_ratio'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 87,
"id": "weighted-input",
"metadata": {},
"outputs": [],
"source": [
"# list(codepConstDF4.sort_values(by=['violation_ratio'],ascending=False).head(5).paths)"
]
},
{
"cell_type": "code",
"execution_count": 88,
"id": "brief-effect",
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P234 \n",
" 7232 \n",
" 997624 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 137.945796 \n",
" \n",
" \n",
" P2214 \n",
" 2989348 \n",
" 721476 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.241349 \n",
" \n",
" \n",
" P433 \n",
" 31113458 \n",
" 436934 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.014043 \n",
" \n",
" \n",
" P275 \n",
" 7295 \n",
" 163856 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 22.461412 \n",
" \n",
" \n",
" P2860 \n",
" 174842113 \n",
" 152425 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.000872 \n",
" \n",
" \n",
" P1435 \n",
" 2121637 \n",
" 92401 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.043552 \n",
" \n",
" \n",
" P708 \n",
" 45718 \n",
" 57276 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.252811 \n",
" \n",
" \n",
" P197 \n",
" 122018 \n",
" 52917 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.433682 \n",
" \n",
" \n",
" P1598 \n",
" 40600 \n",
" 49329 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 1.215000 \n",
" \n",
" \n",
" P1111 \n",
" 1 \n",
" 46803 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 46803.000000 \n",
" \n",
" \n",
" P856 \n",
" 1451949 \n",
" 43599 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 0.030028 \n",
" \n",
" \n",
" P2248 \n",
" 4025 \n",
" 41608 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 10.337391 \n",
" \n",
" \n",
" P2325 \n",
" 4079 \n",
" 40619 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 9.958078 \n",
" \n",
" \n",
" P2243 \n",
" 4035 \n",
" 36870 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 9.137546 \n",
" \n",
" \n",
" P2244 \n",
" 4036 \n",
" 36801 \n",
" [../../allConstraintsAnalysisWRemoved/codepend... \n",
" 9.118186 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P234 7232 997624 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2214 2989348 721476 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P433 31113458 436934 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P275 7295 163856 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2860 174842113 152425 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1435 2121637 92401 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P708 45718 57276 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P197 122018 52917 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1598 40600 49329 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P1111 1 46803 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P856 1451949 43599 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2248 4025 41608 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2325 4079 40619 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2243 4035 36870 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"P2244 4036 36801 [../../allConstraintsAnalysisWRemoved/codepend... \n",
"\n",
" violation_ratio \n",
"P234 137.945796 \n",
"P2214 0.241349 \n",
"P433 0.014043 \n",
"P275 22.461412 \n",
"P2860 0.000872 \n",
"P1435 0.043552 \n",
"P708 1.252811 \n",
"P197 0.433682 \n",
"P1598 1.215000 \n",
"P1111 46803.000000 \n",
"P856 0.030028 \n",
"P2248 10.337391 \n",
"P2325 9.958078 \n",
"P2243 9.137546 \n",
"P2244 9.118186 "
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF4.sort_values(by=['incorrect'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 89,
"id": "wireless-passenger",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"count 1925.000000\n",
"mean 27.339989\n",
"std 1067.009120\n",
"min 0.000000\n",
"25% 0.000000\n",
"50% 0.060000\n",
"75% 0.580000\n",
"max 46803.000000\n",
"Name: violation_ratio, dtype: float64"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"codepConstDF4['violation_ratio'].describe()"
]
},
{
"cell_type": "code",
"execution_count": 90,
"id": "civilian-arnold",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Co-Dependency Constraint - Version 4 - Violation Ratios')"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"codepConstDF4['violation_ratio'].plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 4 - Violation Ratios\")"
]
},
{
"cell_type": "code",
"execution_count": 91,
"id": "threaded-cooler",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Co-Dependency Constraint - Version 4 - Violation Ratios <= 0.5')"
]
},
"execution_count": 91,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"codepConstDF4[codepConstDF4['violation_ratio'] <= 0.5].violation_ratio.plot.hist(bins=100).set_title(\"Co-Dependency Constraint - Version 4 - Violation Ratios <= 0.5\")"
]
},
{
"cell_type": "code",
"execution_count": 92,
"id": "olympic-charlotte",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"No. of properties whose violation ratio is greater than mean: 206/1925\n"
]
}
],
"source": [
"print(f\"No. of properties whose violation ratio is greater than mean: {sum(codepConstDF4['violation_ratio'] >= 2.414703)}/{len(codepConstDF4)}\")"
]
},
{
"cell_type": "markdown",
"id": "published-affiliate",
"metadata": {},
"source": [
"### Find out time required"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "aggregate-conservative",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import os\n",
"from tqdm.notebook import tqdm\n",
"\n",
"codepConstViolations = {}\n",
"\n",
"codepConstViolations = {}\n",
"codepConstPropList = set()\n",
"\n",
"def extractTimes(filename):\n",
" times = []\n",
" with open(filename) as f:\n",
" for line in f:\n",
" if \"real\" in line:\n",
" line = line.strip()\n",
" time1 = line.split(\"\\t\")[1]\n",
" mins, sec = time1.split(\"m\")\n",
" mins = int(mins)\n",
" sec = float(sec[:-1])\n",
" times.append(60 * mins + sec)\n",
" return times\n",
"\n",
"# codepConstViolationsSummary = {}\n",
"times = []\n",
"timesVersion = {\"MSN\": [], \"MN\": [], \"M\": [], \"N\": [], \"S\": []}\n",
"filePath = '/data/wd-correctness/propertiesSplitWRemoved/checkViolations/exec_logs/'\n",
"for filename in tqdm(os.listdir(filePath)):\n",
" if filename.startswith(\"timeLog_codepConst_\"):\n",
" ver = filename.split('_')[2]\n",
" tempTimes = extractTimes(filePath + filename)\n",
" times += tempTimes\n",
" timesVersion[ver] += tempTimes\n",
"print(pd.Series(times).describe())"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "hearing-treasury",
"metadata": {},
"outputs": [],
"source": [
"print(pd.Series(timesVersion['MSN']).describe())"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "animal-vocabulary",
"metadata": {},
"outputs": [],
"source": [
"print(pd.Series(timesVersion['MN']).describe())"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "gentle-accessory",
"metadata": {},
"outputs": [],
"source": [
"print(pd.Series(timesVersion['M']).describe())"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fresh-namibia",
"metadata": {},
"outputs": [],
"source": [
"print(pd.Series(timesVersion['N']).describe())"
]
},
{
"cell_type": "markdown",
"id": "industrial-parcel",
"metadata": {},
"source": [
"## Symmetric Constraint (Q21510862)\n",
"\n",
"This constraint says, if node1 has a property with this constraint, then both `(node1)-[prop]->(node2)` and `(node2)-[prop]->(node1)` must be present with few exceptions"
]
},
{
"cell_type": "markdown",
"id": "silent-fundamentals",
"metadata": {},
"source": [
"### Constraints File"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "known-wednesday",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[2021-04-12 01:02:26 query]: SQL Translation:\r\n",
"---------------------------------------------\r\n",
" SELECT *\r\n",
" FROM graph_1 AS graph_1_c1\r\n",
" WHERE graph_1_c1.\"label\"=?\r\n",
" AND graph_1_c1.\"node2\"=?\r\n",
" PARAS: ['P2302', 'Q21510862']\r\n",
"---------------------------------------------\r\n"
]
}
],
"source": [
"!kgtk --debug query -i ../../gdrive-kgtk-dump-2020-12-07/claims.properties.tsv.gz \\\n",
" ../../gdrive-kgtk-dump-2020-12-07/qualifiers.properties.tsv.gz \\\n",
" --match \"p: (nodeProp1)-[nodePropEdge:P2302]->(:Q21510862)\" \\\n",
" -o ../../constraintsOP/symmetricConstraint/claims.constraints_list.tsv \\\n",
" --graph-cache ~/sqlite3_caches/temp1345.valuetype.sqlite3.db"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "legal-diamond",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"qualiDF = pd.read_csv(\"../../gdrive-kgtk-dump-2020-12-07/qualifiers.properties.tsv.gz\",sep='\\t')\n",
"constDF = pd.read_csv(\"../../constraintsOP/symmetricConstraint/claims.constraints_list.tsv\",sep='\\t')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "exceptional-morris",
"metadata": {},
"outputs": [],
"source": [
"constDF2 = constDF.set_index('id').join(qualiDF.set_index('node1'),rsuffix='_qualifier').drop(columns=['id', 'node2;wikidatatype_qualifier', 'rank', 'node2', 'label', 'node2;wikidatatype']).rename(columns={'label_qualifier':'label', 'node2_qualifier': 'node2'})\n",
"constDF2 = constDF2.reset_index()\n",
"constDF2 = constDF2.rename(columns={'index':'id'})\n",
"constDF2['label'] = constDF2.label.fillna(\"P2316\")\n",
"constDF2['node2'] = constDF2.node2.fillna(\"Normal\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "burning-involvement",
"metadata": {},
"outputs": [],
"source": [
"constDF2.to_csv(\"../../constraintsOP/symmetricConstraint/claims.constraints_all.tsv\",sep=\"\\t\",index=False)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "naval-identification",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import math\n",
"dfItemRequires = pd.read_csv('../../constraintsOP/symmetricConstraint/claims.constraints_all.tsv',sep='\\t')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "considered-madison",
"metadata": {},
"outputs": [],
"source": [
"dfItemRequires = dfItemRequires.groupby(['id','node1','label']).node2.apply(lambda p: p.tolist()).reset_index()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "alone-cattle",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['P2316', 'P2303'], dtype=object)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfItemRequires['label'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "mighty-ordinary",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"P2316 42\n",
"P2303 3\n",
"Name: label, dtype: int64"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfItemRequires['label'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "sensitive-alliance",
"metadata": {},
"outputs": [],
"source": [
"#Reference: https://stackoverflow.com/a/17298454\n",
"# dfItemRequires.pivot_table('node2', ['node1', 'id'], 'label')\n",
"dfItemRequires = dfItemRequires.pivot(index=['node1','id'], columns='label', values='node2')"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "tender-valley",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" label \n",
" P2303 \n",
" P2316 \n",
" \n",
" \n",
" node1 \n",
" id \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" P1322 \n",
" P1322-P2302-Q21510862-85dea891-0 \n",
" NaN \n",
" [Normal] \n",
" \n",
" \n",
" P1327 \n",
" P1327-P2302-Q21510862-a3c3a094-0 \n",
" NaN \n",
" [Normal] \n",
" \n",
" \n",
" P1382 \n",
" P1382-P2302-Q21510862-f6bcfecf-0 \n",
" NaN \n",
" [Normal] \n",
" \n",
" \n",
" P1560 \n",
" P1560-P2302-Q21510862-fabecaeb-0 \n",
" NaN \n",
" [Q21502408] \n",
" \n",
" \n",
" P1639 \n",
" P1639-P2302-Q21510862-384edcd4-0 \n",
" NaN \n",
" [Q21502408] \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"label P2303 P2316\n",
"node1 id \n",
"P1322 P1322-P2302-Q21510862-85dea891-0 NaN [Normal]\n",
"P1327 P1327-P2302-Q21510862-a3c3a094-0 NaN [Normal]\n",
"P1382 P1382-P2302-Q21510862-f6bcfecf-0 NaN [Normal]\n",
"P1560 P1560-P2302-Q21510862-fabecaeb-0 NaN [Q21502408]\n",
"P1639 P1639-P2302-Q21510862-384edcd4-0 NaN [Q21502408]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfItemRequires.head()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "cellular-canal",
"metadata": {},
"outputs": [],
"source": [
"dfItemRequires = dfItemRequires.droplevel(1)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "desperate-poster",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" label \n",
" P2303 \n",
" P2316 \n",
" \n",
" \n",
" node1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" P1322 \n",
" NaN \n",
" [Normal] \n",
" \n",
" \n",
" P1327 \n",
" NaN \n",
" [Normal] \n",
" \n",
" \n",
" P1382 \n",
" NaN \n",
" [Normal] \n",
" \n",
" \n",
" P1560 \n",
" NaN \n",
" [Q21502408] \n",
" \n",
" \n",
" P1639 \n",
" NaN \n",
" [Q21502408] \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"label P2303 P2316\n",
"node1 \n",
"P1322 NaN [Normal]\n",
"P1327 NaN [Normal]\n",
"P1382 NaN [Normal]\n",
"P1560 NaN [Q21502408]\n",
"P1639 NaN [Q21502408]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfItemRequires.head()"
]
},
{
"cell_type": "markdown",
"id": "primary-netherlands",
"metadata": {},
"source": [
"### Query Generator"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "pointed-haven",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d32afc9683cb4bdc9252b04f5608a5f2",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from tqdm.notebook import tqdm\n",
"import os.path\n",
"import os\n",
"\n",
"cnt = 0\n",
"fCnt = 0\n",
"\n",
"folderName = 'symmetricConstraint'\n",
"shellFileSuffix = 'symmConst_Validator_'\n",
"graph_cache_prefix = 'symm_03'\n",
"\n",
"for row in tqdm(dfItemRequires.iterrows()):\n",
"# try:\n",
" prop = row[0]\n",
" constraint = row[1]\n",
" mandatory = []\n",
" suggestion = []\n",
" normal = []\n",
" prop = str(prop)\n",
" \n",
" if type(constraint['P2316']) == list:\n",
" if constraint['P2316'][0] == 'Q21502408':\n",
" sfname = 'mandatory'\n",
" elif constraint['P2316'][0] == 'Q62026391':\n",
" sfname = 'suggestion'\n",
" elif constraint['P2316'][0] == 'Normal':\n",
" sfname = 'normal'\n",
" else:\n",
" sfname = 'normal'\n",
" \n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv\")):\n",
" continue\n",
" \n",
" command = \"{ time ( kgtk --debug query -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" ../../propertiesSplitWRemoved/claims.\"+ prop +\".copy2.tsv \\\n",
" --match 'tsv: (node1)-[nodeProp]->(node2), copy2: (node2)-[]->(node1)' \"\n",
" \n",
" os.system(\"cp ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv ../../propertiesSplitWRemoved/claims.\"+ prop +\".copy2.tsv\")\n",
" \n",
" if cnt % 60 == 0:\n",
" fCnt += 1\n",
" fOP = open(\"../../propertiesSplitWRemoved/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n",
" command\n",
" if type(constraint['P2303']) != list: # Exceptions not present\n",
" commandRest = \" --return 'nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".correct.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\"+graph_cache_prefix+\"_\" + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".correct.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \"\n",
" \n",
" commandOPFile = \"-o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".\"\n",
" \n",
" command += commandRest + commandOPFile + \"incorrect.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n",
"# print(command)\n",
" fOP.write(command)\n",
" else:\n",
" excptns = constraint['P2303']\n",
" commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\"+graph_cache_prefix+\"_\" + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \"\n",
" \n",
" commandOPFile = \"-o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".\"\n",
" \n",
" command += commandRest + commandOPFile + \"incorrect_wo_exceptions.tsv; \"\n",
"# print(command)\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk --debug query -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + sfname + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n",
" --match '(node1)-[]->()' --where 'node1 in \" + str(list(excptns)).replace(\"'\",'\"') + \"' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + sfname + \"/claims.\" + prop + \".correct_exceptions.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\"+graph_cache_prefix+\"_\" + str(fCnt) + \".sqlite3.db; \"\n",
"# print(command)\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk --debug ifnotexists -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + sfname + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + sfname + \"/claims.\" + prop + \".correct_exceptions.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".incorrect.tsv; \"\n",
"# print(command)\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk cat -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".correct_exceptions.tsv \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + sfname + \"/claims.\"+ prop +\".correct.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n",
"# print(command)\n",
" fOP.write(command)\n",
" \n",
" \n",
" cnt += 1\n",
"# except:\n",
"# print(\"Something failed for prop:\",prop)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "polar-canada",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"39"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cnt"
]
},
{
"cell_type": "code",
"execution_count": 105,
"id": "virtual-disney",
"metadata": {},
"outputs": [],
"source": [
"# import os\n",
"# for i in range(1,2):\n",
"# os.system(\"screen -dm sh ../../propertiesSplitWRemoved/checkViolations/symmConst_Validator_\"+str(i)+\".sh\")"
]
},
{
"cell_type": "markdown",
"id": "coral-cheese",
"metadata": {},
"source": [
"### Analyze Violations"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "governmental-backup",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a2a80c6bae2542478392fe2d804285f3",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "472d2081d6734791bba9336e216f61ec",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/13 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "47d0ebe8ae544a38aa6fc3d77a0b1cc6",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/68 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "3ad972dff67c46a8aaaabac8e18d8953",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/6 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import os\n",
"from tqdm.notebook import tqdm\n",
"\n",
"symmConstViolations = {}\n",
"\n",
"def countLines(fname):\n",
" cnt = -1\n",
" with open(fname, 'r') as f:\n",
" for line in f:\n",
" cnt += 1\n",
" return cnt\n",
"\n",
"symmConstViolations = {}\n",
"symmConstPropList = set()\n",
"\n",
"# codepConstViolationsSummary = {}\n",
"\n",
"\n",
"filePath = \"../../allConstraintsAnalysisWRemoved/symmetricConstraint/\"\n",
"for folder in tqdm(iter(['mandatory','normal','suggestion'])):\n",
" for filename in tqdm(os.listdir(filePath + folder)):\n",
" prop = filename.split(\".\")[1]\n",
" correctness = filename.split(\".\")[2]\n",
" if correctness not in ['correct','incorrect']:\n",
" continue\n",
" symmConstPropList.add(prop)\n",
" count1 = countLines(filePath+folder+'/'+filename)\n",
" if folder not in symmConstViolations:\n",
" symmConstViolations[folder] = {}\n",
" if prop not in symmConstViolations[folder]:\n",
" symmConstViolations[folder][prop] = {'correct': 0, 'incorrect': 0, 'paths': []}\n",
" symmConstViolations[folder][prop][correctness] = count1\n",
" symmConstViolations[folder][prop]['paths'].append(filePath+folder+'/'+filename)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "helpful-offset",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"39"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(symmConstPropList)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "entertaining-rescue",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "1fd5da393bf3491a96b878ab99c558c9",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"symmConstViolationsSummary = {}\n",
"for folder in tqdm(iter(['mandatory','normal','suggestion'])):\n",
" symmConstViolationsSummary[folder] = {'correct': 0, 'incorrect': 0}\n",
" for prop in symmConstViolations[folder].keys():\n",
" symmConstViolationsSummary[folder]['correct'] += symmConstViolations[folder][prop]['correct']\n",
" symmConstViolationsSummary[folder]['incorrect'] += symmConstViolations[folder][prop]['incorrect']\n",
" symmConstViolationsSummary[folder]['total'] = symmConstViolationsSummary[folder]['correct'] + symmConstViolationsSummary[folder]['incorrect']\n",
" symmConstViolationsSummary[folder]['percIncorrect'] = symmConstViolationsSummary[folder]['incorrect'] / symmConstViolationsSummary[folder]['total'] * 100\n",
" symmConstViolationsSummary[folder]['propCount'] = len(symmConstViolations[folder].keys())"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "copyrighted-marshall",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'mandatory': {'correct': 7768,\n",
" 'incorrect': 41,\n",
" 'total': 7809,\n",
" 'percIncorrect': 0.525035215776668,\n",
" 'propCount': 5},\n",
" 'normal': {'correct': 14155303,\n",
" 'incorrect': 3484987,\n",
" 'total': 17640290,\n",
" 'percIncorrect': 19.755837347345196,\n",
" 'propCount': 31},\n",
" 'suggestion': {'correct': 819403,\n",
" 'incorrect': 33067,\n",
" 'total': 852470,\n",
" 'percIncorrect': 3.8789634825858976,\n",
" 'propCount': 3}}"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"symmConstViolationsSummary"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "enhanced-ontario",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"18500569"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"noOfStmts = 0\n",
"for fold in symmConstViolationsSummary.keys():\n",
" noOfStmts += symmConstViolationsSummary[fold]['total']\n",
"noOfStmts"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "representative-conjunction",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P1639 \n",
" 2105 \n",
" 25 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.011737 \n",
" \n",
" \n",
" P1560 \n",
" 3488 \n",
" 15 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.004282 \n",
" \n",
" \n",
" P3364 \n",
" 1813 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.000551 \n",
" \n",
" \n",
" P2152 \n",
" 80 \n",
" 0 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.000000 \n",
" \n",
" \n",
" P6185 \n",
" 282 \n",
" 0 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.000000 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P1639 2105 25 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P1560 3488 15 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P3364 1813 1 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P2152 80 0 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P6185 282 0 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"\n",
" violation_ratio \n",
"P1639 0.011737 \n",
"P1560 0.004282 \n",
"P3364 0.000551 \n",
"P2152 0.000000 \n",
"P6185 0.000000 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"symmConstDF1 = pd.DataFrame(symmConstViolations['mandatory']).T\n",
"symmConstDF1['violation_ratio'] = symmConstDF1.apply(lambda p: p.incorrect / (p.incorrect + p.correct), axis=1)\n",
"symmConstDF1.sort_values(by=['violation_ratio'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "gross-extraction",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P2789 \n",
" 105201 \n",
" 6590 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.058949 \n",
" \n",
" \n",
" P1889 \n",
" 533338 \n",
" 24740 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.044331 \n",
" \n",
" \n",
" P197 \n",
" 180864 \n",
" 1737 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.009513 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P2789 105201 6590 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P1889 533338 24740 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P197 180864 1737 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"\n",
" violation_ratio \n",
"P2789 0.058949 \n",
"P1889 0.044331 \n",
"P197 0.009513 "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"symmConstDF2 = pd.DataFrame(symmConstViolations['suggestion']).T\n",
"symmConstDF2['violation_ratio'] = symmConstDF2.apply(lambda p: p.incorrect / (p.incorrect + p.correct), axis=1)\n",
"symmConstDF2.sort_values(by=['violation_ratio'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "heavy-scout",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P5188 \n",
" 0 \n",
" 5 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 1.000000 \n",
" \n",
" \n",
" P5974 \n",
" 0 \n",
" 1 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 1.000000 \n",
" \n",
" \n",
" P1706 \n",
" 12 \n",
" 84 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.875000 \n",
" \n",
" \n",
" P2652 \n",
" 500 \n",
" 836 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.625749 \n",
" \n",
" \n",
" P521 \n",
" 424 \n",
" 146 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.256140 \n",
" \n",
" \n",
" P684 \n",
" 12091769 \n",
" 3437304 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.221346 \n",
" \n",
" \n",
" P3032 \n",
" 1743 \n",
" 316 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.153473 \n",
" \n",
" \n",
" P1382 \n",
" 11075 \n",
" 1657 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.130145 \n",
" \n",
" \n",
" P2293 \n",
" 14736 \n",
" 1969 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.117869 \n",
" \n",
" \n",
" P1327 \n",
" 7954 \n",
" 706 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.081524 \n",
" \n",
" \n",
" P4545 \n",
" 46 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.080000 \n",
" \n",
" \n",
" P451 \n",
" 11072 \n",
" 790 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.066599 \n",
" \n",
" \n",
" P530 \n",
" 6730 \n",
" 382 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.053712 \n",
" \n",
" \n",
" P3403 \n",
" 2174 \n",
" 112 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.048994 \n",
" \n",
" \n",
" P460 \n",
" 265706 \n",
" 12622 \n",
" [../../allConstraintsAnalysisWRemoved/symmetri... \n",
" 0.045349 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P5188 0 5 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P5974 0 1 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P1706 12 84 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P2652 500 836 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P521 424 146 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P684 12091769 3437304 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P3032 1743 316 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P1382 11075 1657 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P2293 14736 1969 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P1327 7954 706 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P4545 46 4 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P451 11072 790 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P530 6730 382 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P3403 2174 112 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"P460 265706 12622 [../../allConstraintsAnalysisWRemoved/symmetri... \n",
"\n",
" violation_ratio \n",
"P5188 1.000000 \n",
"P5974 1.000000 \n",
"P1706 0.875000 \n",
"P2652 0.625749 \n",
"P521 0.256140 \n",
"P684 0.221346 \n",
"P3032 0.153473 \n",
"P1382 0.130145 \n",
"P2293 0.117869 \n",
"P1327 0.081524 \n",
"P4545 0.080000 \n",
"P451 0.066599 \n",
"P530 0.053712 \n",
"P3403 0.048994 \n",
"P460 0.045349 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"symmConstDF3 = pd.DataFrame(symmConstViolations['normal']).T\n",
"symmConstDF3['violation_ratio'] = symmConstDF3.apply(lambda p: p.incorrect / (p.incorrect + p.correct), axis=1)\n",
"symmConstDF3.sort_values(by=['violation_ratio'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "sexual-blowing",
"metadata": {},
"outputs": [],
"source": [
"# !head ../../allConstraintsAnalysisWRemoved/symmetricConstraint/normal/claims.P3032.incorrect.tsv\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "legitimate-aspect",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Symmetric Normal Constraint - Violation Ratios')"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"symmConstDF3.sort_values(by=['violation_ratio'],ascending=False)['violation_ratio'].plot.hist(bins=100).set_title(\"Symmetric Normal Constraint - Violation Ratios\")"
]
},
{
"cell_type": "markdown",
"id": "unlikely-sewing",
"metadata": {},
"source": [
"### Find out time required"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "southern-reasoning",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "01675fcd83284c8ab2aa683f43fef458",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/108 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import os\n",
"from tqdm.notebook import tqdm\n",
"\n",
"codepConstViolations = {}\n",
"\n",
"codepConstViolations = {}\n",
"codepConstPropList = set()\n",
"\n",
"def extractTimes(filename):\n",
" times = []\n",
" with open(filename) as f:\n",
" for line in f:\n",
" if \"real\" in line:\n",
" line = line.strip()\n",
" time1 = line.split(\"\\t\")[1]\n",
" mins, sec = time1.split(\"m\")\n",
" mins = int(mins)\n",
" sec = float(sec[:-1])\n",
" times.append(60 * mins + sec)\n",
" return times\n",
"\n",
"# codepConstViolationsSummary = {}\n",
"times = []\n",
"filePath = '/data/wd-correctness/propertiesSplitWRemoved/checkViolations/exec_logs/'\n",
"for filename in tqdm(os.listdir(filePath)):\n",
" if filename.startswith(\"symmConst_Validator_\"):\n",
" tempTimes = extractTimes(filePath + filename)\n",
" times += tempTimes"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "classical-updating",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"count 38.000000\n",
"mean 15.315868\n",
"std 61.526228\n",
"min 2.069000\n",
"25% 2.617750\n",
"50% 3.003000\n",
"75% 5.889250\n",
"max 383.135000\n",
"dtype: float64\n"
]
}
],
"source": [
"print(pd.Series(times).describe())"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "fundamental-bottle",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Distribution of times (in s) taken for symmetric constraint checks')"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAEICAYAAACTVrmbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAyF0lEQVR4nO3deZxcZZX/8c/p6u50d/algayETVYhQAib4zC4sKiAIyC4IaIBhXF3AMffiCjKOCOMDCMIgsDILiCgKCDggpFAICGEhCUJIStJyB66O91ddX5/PE91VzrV3VXVlVSl6/t+vfrVt+566tate+qe+9x7zd0REREppqpSByAiIv2PkouIiBSdkouIiBSdkouIiBSdkouIiBSdkouIiBRdUZKLmV1vZv+vSPOaYGabzSwRX//JzD5fjHnH+f3ezM4p1vzyWO4PzOxtM3srx/G/bWa/2N5x5RDH+Wb237F7q8+miMt41swOLOL8JpqZm1l1sebZzXLqzexhM9tgZvduz2XtzLbXdlOOzOyTZvbYDljOcWa2dDvMt2j7216Ti5ktMrNmM9tkZuvNbJqZXWBmHdO6+wXu/v0c5/X+nsZx98XuPsjdk7m9hR6Xd5mZ/arL/E9y91v7Ou8845gAfAM4wN13yzJ8mw3F3X/o7kVLqoUws1rgO8B/xpiK9tl08V/A5T3E8Vkze7rIyyyG04FdgZHufkapgymFHf2d3p7M7BYz+0Ff5uHut7v7B3NcXrlu10WR65HLR9x9MLA7cCVwMXBTsYPZ3r80S2gCsMbdV5U6kDydCrzi7su283IeAv7JzLZJvGVud+A1d2/Pd8J+vK1vpT+9z/70XnYId+/xD1gEvL9LvylACjgovr4F+EHsHgX8FlgPrAX+Skhi/xenaQY2A/8KTAQcOA9YDPwlo191nN+fgB8BzwIbgQeBEXHYccDSbPECJwKtQFtc3osZ8/t87K4i/DJ/E1gF3AYMjcPScZwTY3sb+Lce1tPQOP3qOL/vxPm/P77nVIzjli7TDewyfDMwBrgM+FWXWM4FlgDrgAuAI4DZcV1f22W+nwPmxXEfBXaP/Q24Or7fjcBL6c8xy3u6GfhOxutsn833gb8Bm4DHgFHdzCvrdpEx/HHgnCzT7Q+0AMm4btbH/h8CZsb3sAS4rIc4Pxa3i4PiZ3IJsABYA9xD5/aU82cOfI+tt6/zyG176tjWc11HwLeA+7qMew3w04zP4QfAtBjLw8BI4Pa4fp4DJmZM68CXgNfj5/Z9YK84/ca4Tmozxv8wMCvGNQ04OPYv9Ds9AvglsJywff6mh+/VFwjb8SZgLnBYxnbxpxjTy8ApGdPcAvwv8Ls43XRgr562f2Bq/Cxb0+swY39yMeF7tgWopnP7Scf00YxlfxZ4usu6viCu6/UxLqOb7TrL+8+6roj7PkJFZBWwAjg3Y7oBhIrAYmAlcD1QnzH81PiZbozv5cQs+8fR8X1/K+O9LYzv+w3gkz3mjkKSS+y/GPhiluTyo/hGauLfPwCWbV50bnS3EXay9WTfgS2LG8BA4D46d7rH0U1yid2XpcfNGJ658j4HzAf2BAYB9wP/1yW2G2NchxA2rv27WU+3ERLf4Djta8B53cXZZdps76Mj9oxYrgfqgA8SNszfALsAYwkb2D9mbDjzCRtwNWGHNy0OOwF4HhhG50Y+upu4ngPO6CW5LADeFdfRn4Aru5lXt9tFxs7yqm6m/SwZX9iMdfZuws73YMIX6LSucRIS8nxg7zjsK8AzwDjCF/DnwJ0FfuYdn1Ee21PHtp7rOiJ8yd8BhsXxquPnfXjG5zCfkCCGEnZ4rxF+2FTHZf6yyw7vQWAIcGB8j0/EuNPTnxPHPTQu60ggQUi8i4ABffhO/w64Gxge3+c/drN+zyB894+I62FvwtFiTXy/3wZqgeMJO7x9M/ZHawg/gqsJSfau3rZ/MvZjXfYns4Dx6c8sxjWGsO19PH426Xl8lm2Ty2/j8iYQfnyemG3cbtZB1nVF2P7bCeXkGuBkoAkYHodfTagIjCDskx4GfhSHTQE2AB+I72EssF/m/hHYg7ANTY39BxISUXodjwYO7Cn2vpzQXx4D76otLnh3d29z9796jKYHl7n7O+7e3M3w/3P3Oe7+DvD/gDOLdHLwk4Qd2kJ33wxcCpzV5fD3e+7e7O4vAi8SdjhbibGcBVzq7pvcfRHwE+DTRYgx0/fdvcXdHyNs0He6+yoPZau/EnYEEH4p/cjd53ko2fwQmGRmuxM+n8HAfoSd+zx3X9HN8oYRvrQ9+aW7vxY/u3uASd2M19t2sSkuLyfu/id3f8ndU+4+G7gT+Mcuo32V8Kv/OHefH/tdQDgaWeruWwgJ4vR8P/Nu5LI99bStZ11H8fP5C2GnBuGo/G13fz5j2l+6+wJ33wD8Hljg7n+Mn/+9dG4baT92943u/jIwB3gsxp2ePj3+VODn7j7d3ZMezlduAY7qZV1kfZ9mNho4CbjA3dfF9/nnbubx+Rjnc3E9zHf3N+OyBxF+yLS6+5OEHfjZGdM+4O7Pxvd/O53bZT7bf9o17r4k/V7c/V53Xx63vbsJRyVTepj+Sndf7+6Lgafo/juylRzWVRtweez/COEIaF8zM8Ln9jV3X+vumwj7gLPidOcBN7v74/E9LHP3VzLme0CM87vufkNG/xRwkJnVu/uKuO10qy/JZSzh0L2r/yT8qnjMzBaa2SU5zGtJHsPfJGTqUTlF2bMxcX6Z864mnKRNy2zd1UTYqLsaFWPqOq+xRYgx08qM7uYsr9Ox7Q78NDbAWE/4nAwYG7+I1xIOz1eZ2Q1mNqSb5a0jfBF7ksv6gd63i8GEskFOzOxIM3vKzFab2QZC0ui6TXwL+F93z2wssTvwQMa6mUcoTeT7mWeTy/bU07be0zq6FfhU7P4UoSSVKddtI9/xdwe+kV5fcZ2NJ7zXnnT3PscDa919XS/Tp8ddkKX/GGCJu6cy+nX9vmX9DPPc/tO2ei9m9hkzm5WxPg6i5/1RodtTb+tqjW99vi8970agAXg+I8Y/xP7p+WZbr2mfJBwx/jrdI/6w/zjhe7bCzH5nZvv1FHxBycXMjiB8kNu0dIi/3L/h7nsCpwBfN7P3pQd3M8vejmzGZ3RPIGTstwm/3hsy4krQuQJzme9ywpcnc97tbP1Fy8XbMaau88r1RHhvceZrCXC+uw/L+Kt392kA7n6Nux9O+IXyLsJOOJvZcXif9bJdQChPvNjd5Fn63UE47B/v7kMJ5STrMs4Hge+Y2ccy+i0BTuqybuq8OI0Wctmeuv2se1lHvwEONrODCOdAbi9CvLlYAlzRZX01uPud6bC7ma67/kuAEWY2LMdl75Wl/3JgfGaLVfL4vvWw/ff6XuLR/43ARYRWgsMIR35dt72cQulleD7rKtPbhB8IB2Z8ZkPdPZ3UuluvaZfFedyRWSFy90fd/QOEo+tXCOuhW3klFzMbYmYfBu4i1JpfyjLOh81s73hotoHwqzD9C2Mloa6br0+Z2QFm1kCoMf7aQ7PG14A6M/uQmdUQzi0MyJhuJTCxy0aY6U7ga2a2h5kNIhw63u15tv6JsdwDXGFmg+MG+HXgVz1PuVWcI81saD7L7cH1wKXpa0fMbKiZnRG7j4i/+msIybmFzs+nq0fYttRUkJ62CzOrAw4nnNTPZiUwLjaNThtM+FXXYmZTgE9kme5lQgnpf83slNjvesLntHtcdqOZndrHt5fWp+2pp3Xk7i2EX5J3AM/GEsuOcCNwQdxmzMwGxu9b+og2r+90LEH9HviZmQ03sxoze283o/8C+KaZHR6XvXf83KYTfqX/a5z+OOAjhP1Sj3rZ/nN5LwMJSWF1nN+5hCOXQmTbrjvkua4yp0sRPrerzWyXGOdYMzshjnITcK6Zvc/MquKwzKOQNkIJdiBwWxxnVzM71cwGEsqim+l+vwHknlweNrNNhIz3b8BVhBOl2ewD/DEu/O/Az9z9qTjsR4RfkuvN7Js5LhtCCeAWwuFlHfBlgFgf/hJhI1xG2FgySyDpC9vWmNkLWeZ7c5z3XwitH1qAf8kjrkz/Epe/kHBEd0ecf69ivfNOYGFcN72VHHqb3wPAfwB3mdlGwi+rk+LgIYQNbx2hlLCGeB1LFg8D+/U1nqin7eIjwJ/cfXk30z5JSBRvmdnbsd+XgMvjdvnvhOS+DQ/nTT4M3GhmJwE/JRzxPBanfYZwsroY+ro99bSOIJTG3s22JbHtxt1nEFpsXUvYZuYTTkSnFfKd/jRhB/YKobHAV7tZ9r3AFYTv0ibC0dsId28lbDMnEX5h/wz4TJfzBt3pafu/CTggvpffdBPTXML51L8TksO7Ca0lC5Ftu+4qp3WVxcWEz+qZuA/4I7AvgLs/S9h/X034EfNntj7iJq7jfyaUdG8mlHe/TjhqXEv40fnFngJIt+ISycrMphIu/vzqdlzGdELLujnbaxn9gYWLcV8BdnP3jaWOR6QnSi4iO4FY2r0KGOLunyt1PCK90RWnImUu1rlXEso4J5Y4HJGcFNpaLGFmM83st/H1HmY23czmm9nd6RNUZjYgvp4fh08sYuwiFSFeLzLI3Q90996a7YuUhUKvc/kK4fqAtP8Arnb3vQknys6L/c8D1sX+V8fxRESkn8v7nIuZjSO0WrmC0HrgI4Rmebu5e7uZHU24OvcEM3s0dv/dwlXKbwGN3stCR40a5RMnTsz/3YiIVKjnn3/+bXdv7H3MHaOQcy7/TbhBXbqd+0jCTdfSbfmX0nml7Fji1a0x8WyI42/T7C62SpoKMGHCBGbMmFFAaCIilcnM3ux9rB0n34soPwys8q3vaVQU7n6Du09298mNjWWTfEVEpAD5HrkcC5xiZicTLmYcQrgobZiZVcejl3F03oZhGeHWLUtjWWwo4aIlERHpx/I6cnH3S919nLtPJNxh80l3/yThDpqnx9HOIdzOG8KV0OfE7tPj+LqwRkSkn+vLXZEzXUy4yd58wjmV9FMqbyLcM2s+4eR/LndIFhGRnVzBF1G6+58ID5bB3ReS5XkG8WZ7FflscRGRSlasIxcREZEOSi4iIlJ0Si4iIkXw29nLWfdOa6nDKBtKLiIifbTunVYuumMmv5lVjAea9g9KLiIifbR5S7hByeaWvB5i268puYiI9FFzW3Kr/6LkIiLSZ02tya3+i5KLiEifNbWGclizkksHJRcRkT5qUVlsG0ouIiJ9pLLYtpRcRET6KF0Oa25Ta7E0JRcRkT7qaC2mI5cOSi4iIn2ksti2lFxERPqosyym5JKm5CIi0kfppKIjl05KLiIifZS+zqVFyaWDkouISB81t6YAaGpLoie5B3klFzOrM7NnzexFM3vZzL4X+99iZm+Y2az4Nyn2NzO7xszmm9lsMztsO7wHEZGSSjdBTqac1mSqxNGUh3wfc7wFON7dN5tZDfC0mf0+DvuWu/+6y/gnAfvEvyOB6+J/EZF+I/NcS0trigHViRJGUx7yOnLxYHN8WRP/ejoGPBW4LU73DDDMzEYXFqqISHnKvL6lSRdSAgWcczGzhJnNAlYBj7v79Djoilj6utrMBsR+Y4ElGZMvjf2yzXeqmc0wsxmrV6/ONywRkZLJbIKsFmNB3snF3ZPuPgkYB0wxs4OAS4H9gCOAEcDFBcz3Bnef7O6TGxsb851cRKRkmlqT1CQM0FX6aQW3FnP39cBTwInuviKWvrYAvwSmxNGWAeMzJhsX+4mI9BvNrUlGDKwN3bqQEsi/tVijmQ2L3fXAB4BX0udRzMyA04A5cZKHgM/EVmNHARvcfUWRYhcRKQvNbUlGDAxnA1QWC/JtLTYauNXMEoTEdI+7/9bMnjSzRsCAWcAFcfxHgJOB+UATcG5RohYRKSNNre2MTB+5KLkAeSYXd58NHJql//HdjO/AhYWFJiJS/lIpp6UtlVEWU2sx0BX6IiJ90tIejlRGDgrJRWWxQMlFRKQP0slEZbGtKbmIiPRBOpmkT+gruQRKLiIifZBuejykvprqKqNJTZEBJRcRkT5Jl8UaahPU1yZ05BIpuYiI9EE6mdTVJGhQcumg5CIi0gfppscNtdU01FarLBYpuYiI9EH6QWENtQnqahI0t+o6F1ByERHpk/QjjuvTZTEduQBKLiIifZJOJvW1IbnoIspAyUVEpA+aM1qLhbKYkgsouYiI9En6SKWuWmWxTEouIiJ90NyWpK6miqoqU1ksg5KLiEgfNLcmaagNN5hXWayTkouISB80tSapr0kAxCOXdsLTRiqbkouISB80t7VTX5tOLtWkHFqTqRJHVXpKLiIifRDKYiG5pI9gVBorILmYWZ2ZPWtmL5rZy2b2vdh/DzObbmbzzexuM6uN/QfE1/Pj8IlFfg8iIiXT1JqkLiaV9BGMTuoXduSyBTje3Q8BJgEnmtlRwH8AV7v73sA64Lw4/nnAutj/6jieiEi/0NzWeeSS/q/myAUkFw82x5c18c+B44Ffx/63AqfF7lPja+Lw95mZFRqwiEg5UVksu4LOuZhZwsxmAauAx4EFwHp3T9+xbSkwNnaPBZYAxOEbgJFZ5jnVzGaY2YzVq1cXEpaIyA6nslh2BSUXd0+6+yRgHDAF2K+vgbj7De4+2d0nNzY29nV2IiI7hMpi2fWptZi7rweeAo4GhplZdRw0DlgWu5cB4wHi8KHAmr4sV0SkXDRnXOdSX1Md++m2+4W0Fms0s2Gxux74ADCPkGROj6OdAzwYux+Kr4nDn3RdYSQi/UAq5TS3JamPV+irLNapuvdRtjEauNXMEoTkdI+7/9bM5gJ3mdkPgJnATXH8m4D/M7P5wFrgrCLELSJSci3tnXdEzvyv5FJAcnH32cChWfovJJx/6dq/BTijoOhERMpYulVYfZcT+i0656Ir9EVECpU+Qqnv0hRZRy5KLiIiBUu3CkuXw2oSVdQkTMkFJRcRkYJ1LYulu1UWU3IRESlY17IYhDsjN6kpspKLiEihWjrKYp1to+r1NEpAyUVEpGBNKot1S8lFRKRA6fJXw1ZlMR25gJKLiEjB0kcomedcVBYLlFxERAqkslj3lFxERAqULbmoLBYouYiIFKilLUldTRVVVZ3PP1RZLFByEREpUFPG7fbT6muqdct9lFxERArW1Jrc6hoXCGWx5rYklf5kESUXEZECtbQlt2opBqEslnLY0p4qUVTlQclFRKRATa3tWcpi8VHHFX7eRclFRKRATa3bHrmkL6hsrvDmyEouIiIFamnLckJfT6ME8kwuZjbezJ4ys7lm9rKZfSX2v8zMlpnZrPh3csY0l5rZfDN71cxOKPYbEBEplXBCX2WxbPJ9zHE78A13f8HMBgPPm9njcdjV7v5fmSOb2QHAWcCBwBjgj2b2Lnev7LUuIv1C9rJY2K2qLJYHd1/h7i/E7k3APGBsD5OcCtzl7lvc/Q1gPjCl0GBFRMpJz2Wxyr7WpeBzLmY2ETgUmB57XWRms83sZjMbHvuNBZZkTLaUbpKRmU01sxlmNmP16tWFhiUissOoLNa9gpKLmQ0C7gO+6u4bgeuAvYBJwArgJ/nO091vcPfJ7j65sbGxkLBERHaYVMppbktSn+UiSlBZLO/kYmY1hMRyu7vfD+DuK9096e4p4EY6S1/LgPEZk4+L/UREdmrpiyS7lsUa1FoMyL+1mAE3AfPc/aqM/qMzRvsoMCd2PwScZWYDzGwPYB/g2b6FLCJSetkeFAad51wqvSyWb2uxY4FPAy+Z2azY79vA2WY2CXBgEXA+gLu/bGb3AHMJLc0uVEsxEekPOm633805l0o/cskrubj704BlGfRID9NcAVyRZ1wiImWt4ymUXcpi1YkqahNVOudS6gBERHZG6SOTrmUxCEczlX7bfSUXEZECpI9MupbFIBzNVHpZTMlFRKQAzVkecZyWfqZLJVNyEREpQGdZbNtT16EspuQiIiJ5Sh+ZZD3norKYkouISCHSJ+zrspTF6lUWU3IRESlET63FGlQWU3IRESlEczfXuUA4D9PUpqbIIiKSp+bWJAOqq6iq2va68rqaBM2tqRJEVT6UXERECpDtdvtpDbqIUslFRKQQzVkeFJbWUJugqS2Ju+/gqMqHkouISAGaszziOK2uJoF75235K5GSi4hIAZpa27NeQAkZDwyr4BZjSi4iIgXorSwG0FTB17oouYiIFKC3slgYp3JP6iu5iIgUoOfWYqFcVsnNkZVcREQKkFNZTEcuuTGz8Wb2lJnNNbOXzewrsf8IM3vczF6P/4fH/mZm15jZfDObbWaHbY83ISKyo+VSFtM5l9y1A99w9wOAo4ALzewA4BLgCXffB3givgY4Cdgn/k0FritK1CIiJdbbRZQALWotlht3X+HuL8TuTcA8YCxwKnBrHO1W4LTYfSpwmwfPAMPMbHQxAhcRKRV3z7EspuSSNzObCBwKTAd2dfcVcdBbwK6xeyywJGOypbFftvlNNbMZZjZj9erVhYYlIrLdtbSFE/X13VznUq+myIUlFzMbBNwHfNXdN2YO83C/g7zveeDuN7j7ZHef3NjYWEhYIiI7RPpEfXdlsfQRjcpieTCzGkJiud3d74+9V6bLXfH/qth/GTA+Y/JxsZ+IyE6rp9vtQ2dTZJXFcmRmBtwEzHP3qzIGPQScE7vPAR7M6P+Z2GrsKGBDRvlMRGSnlL6tS3etxRJVRm11VUU/0yV7wbB7xwKfBl4ys1mx37eBK4F7zOw84E3gzDjsEeBkYD7QBJzb14BFREqtp6dQptXXVPbTKPNKLu7+NLDtk3GC92UZ34ELC4hLRKRs9VYWAz3qWFfoi4jkqbeyWHqYWouJiEjO0kcu3d1yH1QWU3IREclT+pyLymLdU3IREclT+lb6PZfFqlUWExGR3HWWxXo4cqlJ6HkuIiKSu3RZrK6Hslh9baIjCVUiJRcRkTw1tyYZUF1Foqq7KzNictE5FxERyVVzW/fPcklrqEno9i8iIpK7ptYkDT2UxKCzLBauJa88Si4iInnq6SmUafW1CdxhS3tqB0VVXpRcRETylGtZDCr3zshKLiIieWpqbaehpudbM3Y8MKxCmyMruYiI5Cm3slhIPi0V2hxZyUVEJE/Nbckeb/0CKospuYiI5KmpNdnj1fnQefW+kouIiOQkl7JYXRxeqVfpK7mIiOQpp7JYOrnoyCU3Znazma0yszkZ/S4zs2VmNiv+nZwx7FIzm29mr5rZCcUKXESkFNyd5rYcymKxNZnKYrm7BTgxS/+r3X1S/HsEwMwOAM4CDozT/MzMev5ERETKWEtbCvfO1mDdqasNu1eVxXLk7n8B1uY4+qnAXe6+xd3fAOYDU/JdpohIuUgni/qannef6adUVupt94t5zuUiM5sdy2bDY7+xwJKMcZbGftsws6lmNsPMZqxevbqIYYmIFE/6osieHnEMnU+pVFmsb64D9gImASuAn+Q7A3e/wd0nu/vkxsbGIoUlIlJc6RP0vbUWS1QZtdVVKov1hbuvdPeku6eAG+ksfS0DxmeMOi72ExHZKXWWxXo/fdxQwc90KUpyMbPRGS8/CqRbkj0EnGVmA8xsD2Af4NliLFNEpBTSZa7eWotBZT/TpeeiYRZmdidwHDDKzJYC3wWOM7NJgAOLgPMB3P1lM7sHmAu0Axe6e2WuaRHpFzqOXHJILnUVfOSSd3Jx97Oz9L6ph/GvAK7IdzkiIuUo13MuEMtiOuciIiK96SiL9XLL/fQ4uuW+iIj0Kn0kkr5Isif1FVwWU3IREclDc47XuUBoUaaymIiI9CpdFsu1KXKlthZTchERyUNzW5La6ioSVdbruCqLiYhITppzeFBYmspiIiKSk6bWZMcjjHuTbors7ts5qvKj5CIikofmtmTHUyZ7U19bjXu4TX+lUXIREclDfmWxyn2mi5KLiEgemlrbc7qAEjqbK1fihZRKLiIieWhuS+VRFgvjVWKLMSUXEZE8NLe253VCHyrzgWFKLiIieWjKsyky6JyLiIj0oiWv1mIqi4mISA7yu84lfUJfyUVERLrh7jS3qSyWCyUXEZEcbWlP4U4BZTE1Re6Vmd1sZqvMbE5GvxFm9riZvR7/D4/9zcyuMbP5ZjbbzA4rZvAiIjtS54PC1FqsN4UcudwCnNil3yXAE+6+D/BEfA1wErBP/JsKXFdYmCIipdeUx7NcAOpUFsudu/8FWNul96nArbH7VuC0jP63efAMMMzMRhcYq4hISbV0PIUytyOXRJUxoLpKrcX6YFd3XxG73wJ2jd1jgSUZ4y2N/bZhZlPNbIaZzVi9enWRwhIRKZ58y2JQuQ8MK/oJfQ/3ls77/tLufoO7T3b3yY2NjcUOS0Skz9JHIPU5HrlAKKEpuRRuZbrcFf+viv2XAeMzxhsX+4mI7HSa2vJPLnU1VR3ltEpSrOTyEHBO7D4HeDCj/2diq7GjgA0Z5TMRkZ1K+sgl1+tcwrjVFXlX5NyaPGQwszuB44BRZrYU+C5wJXCPmZ0HvAmcGUd/BDgZmA80AecWIWYRkZLoKIvlcc6lvkLPueSdXNz97G4GvS/LuA5cmO8yRETKUSFlsfqaBOubWrdXSGVLV+iLiOSoOc/rXMK4lXnkouQiIpKj5tYUoLJYLpRcRERy1NTWTm11FYkqy3ma+pqEWouJiEj3mvN4UFiaymIiItKj5tZkXiUxgPraaprbkqRSeV9bvlNTchERyVFTWzKvlmLQeU3MlvbU9gipbCm5iIjkqJCyWPpIp9IupFRyERHJUWFlscp8pouSi4hIjkJZLL9rz9NHOpX2TBclFxGRHDW3tud1u33oLItV2jNdlFxERHLUXMAJfZXFRESkR82thbQWC2W05jad0BcRkSyaWpN9KIupKbKIiHTh7gWVxRpq1RRZRES6saU9hXt+t9uHzvHVWkxERLaRPiGv1mK5UXIREclBcwEPCoPMK/QrK7nk/STKnpjZImATkATa3X2ymY0A7gYmAouAM919XTGXKyKyvaUfFJbvRZRVVUZdTZXKYkXwT+4+yd0nx9eXAE+4+z7AE/G1iMhOpZAHhaU11FarLLYdnArcGrtvBU7bAcsUESmqpo5HHOefXOprKu+ZLsVOLg48ZmbPm9nU2G9Xd18Ru98Cds02oZlNNbMZZjZj9erVRQ5LRKRvmgo855KeptIuoizqORfgPe6+zMx2AR43s1cyB7q7m1nWJ+a4+w3ADQCTJ0+urKfqiEjZa4lHHoWVxXTk0ifuviz+XwU8AEwBVprZaID4f1UxlykisiN0NEUu4Milriahcy6FMrOBZjY43Q18EJgDPAScE0c7B3iwWMsUEdlR+lIWa6hNVFxrsWKWxXYFHjCz9HzvcPc/mNlzwD1mdh7wJnBmEZcpIrJD9LUstnSdkktB3H0hcEiW/muA9xVrOSIipdBZFst/t6mymIiIZNXU1k5tdRWJKst72kosiym5iIjkoKU1WVBJDMLRju6KLCIi22hqTRbUUgzCeZqWthSpVOVcZaHkIiKSg6YCnuWSlp6upb1ySmNKLiIiOehbWazy7oys5CIikoO+lsWgsp7pouQiUsHWbN7CzU+/QUuFtWQqRCiLFXb1RiU+jbLY9xYTkZ1EMuX8y50zmbZgDYvXNnHZKQeWOqSy1tKaZLchAwqaVmUxkRxMX7iGK343t+KaVvY31/95AdMWrOGQcUO5ZdoinnxlZalDKmtNbe0FXUAJUF8Tpquk74ySS5l59a1NZf0ln7diI+fdOoMb//oGn/rFdNY3tZY6JCnAjEVruerx1zjlkDHcff7R7D96CN+6dzarNraUOrSy1dxahNZiFVQWU3IpI7OXruf066bxuVtm8PM/Lyh1ONt4a0ML5/7yOQYNqOb7px3EnGUbOfPnf+etDdoh7UzWN7XylbtmMXZYPVd89CDqahL8z9mTeKe1nW/c+2JFXYuRj2a1FsuLkkuZmLt8I5++6VmGDazhpIN240e/f4WfPPYq7uXxRd+8pZ1zb3mOTS1t3PzZI/j0Ubtzy7lHsGxdMx+7bhoLV28udYhF19KW7Hc7Wnfn4vtms2pTC9d+4lAG19UAsPcug/n3Dx/IX19/m5uefqPEUZYfd6epre+txZRcZId6feUmPnXTdAbWJrjj80dx7ScO46wjxvM/T87new/PLfkOri2Z4sLbX+C1lZv42acO54AxQwA4Zu9R3DX1aFrakpxx/d95aemGksZZTH+Ys4IpV/yRj143jcVrmkodTrfakynak6mcx//VM2/y6MsrufjE/Th43LCthp09ZTwnHLgrP370FeYs6z+fZTFsaU/hHm5AWYgGlcVkR1u4ejOf+MV0qquM279wFONHNJCoMn70z+/mvPfswS3TFnHJ/bNJlijBuDv//uAc/vzaan5w2kH847satxr+7nFDufeCo6mrSXD2jc8wbcHbJYmzWFrakvzbAy9xwa9eYOzwBhau3syHrvkrv5u9oveJdyB3594ZS5jywyc45sonue/5pb3+CJm7fCPf/908/mnfRj537B7bDDczrvzngxk5cABfvnMm72ypnJPPvWnuw4PCoPOci45cZIdYvKaJT9w4nVTKueMLR7LHqIEdw8yM73xof778vn24Z8ZSvnzXTFrbc/+FWizX/XkBdz67hC8dtxdnT5mQdZw9Gwdx3xePYcywOj5783P8YU557Yhz9drKTZxy7dPcPn0x5793Tx688Fge+fI/sPeug7jwjhf49gMvlcUvz1ff2sSZP/873/r1bPYYNZDRw+r5xr0v8s/XTWPm4nVZp2lqbeeiO19gWH0N/3XGIVR1c2ff4QNrufrjk3hjzTtc/vDc7fk2dirpB4UVmlzqqisvueg6lxJZtr6ZT/ziGVrak9z5haPYe5fB24xjZnz9A+9i0IAEP3zkFZpbk/zsk4dlPTRvS6aYvXQD099Yw0tLNzCkrobRw+oYM7SeMcPqO7rzae3y0IvL+fEfXuWUQ8bwzQ/u2+O4uw2t457zj+ZztzzHl25/gR+c9m7OnjKe+PC4vLg7C1a/Q22iivEj6guaR77Lu+PZxVz+8FwG11Vz6+emdByhjR/RwD3nH81PHnuN6/+8gOcXrePaTxzKPrtu+3ltb+9saeenT7zOTU+/wZC6an78sYM5/fBxADwwcxlX/uEVPvqzaXzssHFcfOK+7DKkrmPaf3/wZd54+x1u//yRjBzU87UaR+81ki8dtxf/+9QC3vuuRj508Ojt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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import seaborn as sns\n",
"sns.lineplot(data=pd.Series(times)).set_title(\"Distribution of times (in s) taken for symmetric constraint checks\")"
]
},
{
"cell_type": "markdown",
"id": "informed-animal",
"metadata": {},
"source": [
"## Inverse Constraint (Q21510855)\n",
"\n",
"This constraint says, if node1 has a property with this constraint, then both `(node1)-[prop]->(node2)` and `(node2)-[prop]->(node1)` must be present with few exceptions"
]
},
{
"cell_type": "markdown",
"id": "dramatic-manchester",
"metadata": {},
"source": [
"### Constraints File"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "leading-server",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[2021-04-11 11:05:47 query]: SQL Translation:\r\n",
"---------------------------------------------\r\n",
" SELECT *\r\n",
" FROM graph_1 AS graph_1_c1\r\n",
" WHERE graph_1_c1.\"label\"=?\r\n",
" AND graph_1_c1.\"node2\"=?\r\n",
" PARAS: ['P2302', 'Q21510855']\r\n",
"---------------------------------------------\r\n"
]
}
],
"source": [
"!kgtk --debug query -i ../../gdrive-kgtk-dump-2020-12-07/claims.properties.tsv.gz \\\n",
" ../../gdrive-kgtk-dump-2020-12-07/qualifiers.properties.tsv.gz \\\n",
" --match \"p: (nodeProp1)-[nodePropEdge:P2302]->(:Q21510855)\" \\\n",
" -o ../../constraintsOP/inverseConstraint/claims.constraints_list.tsv \\\n",
" --graph-cache ~/sqlite3_caches/temp1345.valuetype.sqlite3.db"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "offshore-sudan",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"id\tnode1\tlabel\tnode2\trank\tnode2;wikidatatype\r\n",
"P1026-P2302-Q21510855-adc83b86-0\tP1026\tP2302\tQ21510855\tnormal\twikibase-item\r\n",
"P1029-P2302-Q21510855-6b55e057-0\tP1029\tP2302\tQ21510855\tnormal\twikibase-item\r\n",
"P115-P2302-Q21510855-f7aa0b78-0\tP115\tP2302\tQ21510855\tnormal\twikibase-item\r\n",
"P1151-P2302-Q21510855-0d9aa9c6-0\tP1151\tP2302\tQ21510855\tnormal\twikibase-item\r\n",
"P1204-P2302-Q21510855-e3d53bb6-0\tP1204\tP2302\tQ21510855\tnormal\twikibase-item\r\n",
"P1283-P2302-Q21510855-0e7699bb-0\tP1283\tP2302\tQ21510855\tnormal\twikibase-item\r\n",
"P1308-P2302-Q21510855-2aba96b7-0\tP1308\tP2302\tQ21510855\tnormal\twikibase-item\r\n",
"P1365-P2302-Q21510855-c809b758-0\tP1365\tP2302\tQ21510855\tnormal\twikibase-item\r\n",
"P1366-P2302-Q21510855-eee12ef8-0\tP1366\tP2302\tQ21510855\tnormal\twikibase-item\r\n"
]
}
],
"source": [
"!head ../../constraintsOP/inverseConstraint/claims.constraints_list.tsv"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "received-colonial",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"qualiDF = pd.read_csv(\"../../gdrive-kgtk-dump-2020-12-07/qualifiers.properties.tsv.gz\",sep='\\t')\n",
"constDF = pd.read_csv(\"../../constraintsOP/inverseConstraint/claims.constraints_list.tsv\",sep='\\t')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "overall-expense",
"metadata": {},
"outputs": [],
"source": [
"constDF2 = constDF.set_index('id').join(qualiDF.set_index('node1'),rsuffix='_qualifier').drop(columns=['id', 'node2;wikidatatype_qualifier', 'rank', 'node2', 'label', 'node2;wikidatatype']).rename(columns={'label_qualifier':'label', 'node2_qualifier': 'node2'})\n",
"constDF2 = constDF2.reset_index()\n",
"constDF2 = constDF2.rename(columns={'index':'id'})\n",
"constDF2['label'] = constDF2.label.fillna(\"P2316\")\n",
"constDF2['node2'] = constDF2.node2.fillna(\"Normal\")"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "valid-throat",
"metadata": {},
"outputs": [],
"source": [
"constDF2.to_csv(\"../../constraintsOP/inverseConstraint/claims.constraints_all.tsv\",sep=\"\\t\",index=False)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "focused-pennsylvania",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import math\n",
"dfItemRequires = pd.read_csv('../../constraintsOP/inverseConstraint/claims.constraints_all.tsv',sep='\\t')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "moved-rental",
"metadata": {},
"outputs": [],
"source": [
"dfItemRequires = dfItemRequires.groupby(['id','node1','label']).node2.apply(lambda p: p.tolist()).reset_index()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "attached-rings",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['P2306', 'P2316', 'P4155', 'P2303'], dtype=object)"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfItemRequires['label'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "loving-mileage",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"P2306 110\n",
"P2316 10\n",
"P2303 2\n",
"P4155 1\n",
"Name: label, dtype: int64"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfItemRequires['label'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "local-forty",
"metadata": {},
"outputs": [],
"source": [
"#Reference: https://stackoverflow.com/a/17298454\n",
"# dfItemRequires.pivot_table('node2', ['node1', 'id'], 'label')\n",
"dfItemRequires = dfItemRequires.pivot(index=['node1','id'], columns='label', values='node2')"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "pressed-upset",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" label \n",
" P2303 \n",
" P2306 \n",
" P2316 \n",
" P4155 \n",
" \n",
" \n",
" node1 \n",
" id \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" P1026 \n",
" P1026-P2302-Q21510855-adc83b86-0 \n",
" NaN \n",
" [P50] \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1029 \n",
" P1029-P2302-Q21510855-6b55e057-0 \n",
" NaN \n",
" [P5096] \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P115 \n",
" P115-P2302-Q21510855-f7aa0b78-0 \n",
" NaN \n",
" [P466] \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1151 \n",
" P1151-P2302-Q21510855-0d9aa9c6-0 \n",
" NaN \n",
" [P1204] \n",
" [Q21502408] \n",
" NaN \n",
" \n",
" \n",
" P1204 \n",
" P1204-P2302-Q21510855-e3d53bb6-0 \n",
" NaN \n",
" [P1151] \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"label P2303 P2306 P2316 P4155\n",
"node1 id \n",
"P1026 P1026-P2302-Q21510855-adc83b86-0 NaN [P50] NaN NaN\n",
"P1029 P1029-P2302-Q21510855-6b55e057-0 NaN [P5096] NaN NaN\n",
"P115 P115-P2302-Q21510855-f7aa0b78-0 NaN [P466] NaN NaN\n",
"P1151 P1151-P2302-Q21510855-0d9aa9c6-0 NaN [P1204] [Q21502408] NaN\n",
"P1204 P1204-P2302-Q21510855-e3d53bb6-0 NaN [P1151] NaN NaN"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfItemRequires.head()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "extra-stomach",
"metadata": {},
"outputs": [],
"source": [
"dfItemRequires = dfItemRequires.droplevel(1)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "seeing-marine",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" label \n",
" P2303 \n",
" P2306 \n",
" P2316 \n",
" P4155 \n",
" \n",
" \n",
" node1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" P1026 \n",
" NaN \n",
" [P50] \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1029 \n",
" NaN \n",
" [P5096] \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P115 \n",
" NaN \n",
" [P466] \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" P1151 \n",
" NaN \n",
" [P1204] \n",
" [Q21502408] \n",
" NaN \n",
" \n",
" \n",
" P1204 \n",
" NaN \n",
" [P1151] \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"label P2303 P2306 P2316 P4155\n",
"node1 \n",
"P1026 NaN [P50] NaN NaN\n",
"P1029 NaN [P5096] NaN NaN\n",
"P115 NaN [P466] NaN NaN\n",
"P1151 NaN [P1204] [Q21502408] NaN\n",
"P1204 NaN [P1151] NaN NaN"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfItemRequires.head()"
]
},
{
"cell_type": "markdown",
"id": "composite-cutting",
"metadata": {},
"source": [
"### Query Generator"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "acoustic-belarus",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b59f5f665aca4df7a79eaa3420c47bc5",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from tqdm.notebook import tqdm\n",
"import os.path\n",
"import os\n",
"\n",
"cnt = 0\n",
"fCnt = 0\n",
"fOP = None\n",
"\n",
"folderName = 'inverseConstraint_Final'\n",
"shellFileSuffix = 'invConst_Validator_new3_'\n",
"graph_cache_file_prefix = \"inv_4_\"\n",
"\n",
"for prop, constraint in tqdm(dfItemRequires.iterrows()):\n",
"# try:\n",
" \n",
" if type(constraint['P2316']) == list:\n",
" if constraint['P2316'][0] == 'Q21502408':\n",
" subFolderName = \"mandatory\"\n",
" elif constraint['P2316'][0] == 'Q62026391':\n",
" subFolderName = \"suggestion\"\n",
" else:\n",
" subFolderName = \"normal\"\n",
" \n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv\")):\n",
" continue\n",
" \n",
" prop2 = constraint['P2306']\n",
"\n",
" if type(prop2) != list:\n",
" continue\n",
" prop2 = prop2[0]\n",
"\n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop2 +\".tsv\")):\n",
" print(f\"File: ../../propertiesSplitWRemoved/claims.{prop2}.tsv does not exist\")\n",
" continue\n",
" \n",
" if cnt % 40 == 0:\n",
" if fOP:\n",
" fOP.close()\n",
" fCnt += 1\n",
" fOP = open(\"../../propertiesSplitWRemoved/checkViolations/\" + shellFileSuffix + str(fCnt) + \".sh\",\"w\")\n",
" \n",
" \n",
" command = \"{ time ( kgtk --debug query -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" ../../propertiesSplitWRemoved/claims.\"+ prop2 +\".tsv \\\n",
" --match '\"+ \\\n",
" f\"{prop}: (node1)-[nodeProp]->(node2), {prop2}: (node2)-[]->(node1)' \"\n",
"\n",
" if type(constraint['P2303']) != list: # Exceptions not present\n",
" commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \"\n",
" \n",
" commandOPFile = \"-o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n",
" \n",
" command += commandRest + commandOPFile + \"incorrect.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/\" + shellFileSuffix + str(fCnt) + \".txt;\\n\"\n",
"# print(command)\n",
" fOP.write(command)\n",
" else:\n",
" excptns = set(constraint['P2303'])\n",
" commandRest = \" --return 'distinct nodeProp.id, node1 as `node1`, nodeProp.label as `label`, node2 as `node2`' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \\\n",
" kgtk --debug ifnotexists -i ../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \"\n",
" \n",
" commandOPFile = \"-o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".\"\n",
" \n",
" command += commandRest + commandOPFile + \"incorrect_wo_exceptions.tsv; \"\n",
"# print(command)\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk --debug query -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n",
" --match '(node1)-[]->()' --where 'node1 in \" + str(list(excptns)).replace(\"'\",'\"') + \"' \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n",
" --graph-cache ~/sqlite3_caches/\" + str(graph_cache_file_prefix) + str(fCnt) + \".sqlite3.db; \"\n",
"# print(command) \n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk --debug ifnotexists -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_wo_exceptions.tsv \\\n",
" --filter-on ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\" + prop + \".incorrect_w_exceptions.tsv \\\n",
" --filter-mode NONE \\\n",
" --input-keys node1 label \\\n",
" --filter-keys node1 label \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect.tsv; \"\n",
"# print(command)\n",
" fOP.write(command)\n",
" \n",
" command = \" kgtk cat -i ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct_wo_exceptions.tsv \\\n",
" ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".incorrect_w_exceptions.tsv \\\n",
" -o ../../allConstraintsAnalysisWRemoved/\" + folderName + \"/\" + subFolderName + \"/claims.\"+ prop +\".correct.tsv ) } 2>> ../../propertiesSplitWRemoved/checkViolations/exec_logs/\" + shellFileSuffix + str(fCnt) + \".txt; \\n\"\n",
"# print(command)\n",
" fOP.write(command)\n",
" \n",
" \n",
" cnt += 1\n",
"# except:\n",
"# print(\"Something failed for prop:\",prop)\n",
"if fOP:\n",
" fOP.close()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "large-climb",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"110"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cnt"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "involved-vietnamese",
"metadata": {},
"outputs": [],
"source": [
"# import os\n",
"# for i in range(1,7):\n",
"# os.system(\"screen -dm sh ../../propertiesSplitWRemoved/checkViolations/invConst_Validator_new3_\"+str(i)+\".sh\")"
]
},
{
"cell_type": "markdown",
"id": "retired-audio",
"metadata": {},
"source": [
"### Analyze Violations"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "specified-evanescence",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a74a23c16aba41699ee53f4b2fc430ee",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "daa550eb584443cfa2cebf366c663cd1",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/12 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "685dc6f19fa946aab60837d34b26ed2c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/206 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "9196990f2ed74b3b85f6acfb8f5fbca9",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/8 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import os\n",
"from tqdm.notebook import tqdm\n",
"\n",
"invConstViolations = {}\n",
"\n",
"def countLines(fname):\n",
" cnt = -1\n",
" with open(fname, 'r') as f:\n",
" for line in f:\n",
" cnt += 1\n",
" return cnt\n",
"\n",
"invConstViolations = {}\n",
"invConstPropList = set()\n",
"\n",
"# codepConstViolationsSummary = {}\n",
"\n",
"\n",
"filePath = \"../../allConstraintsAnalysisWRemoved/inverseConstraint_Final/\"\n",
"for folder in tqdm(iter(['mandatory','normal','suggestion'])):\n",
" for filename in tqdm(os.listdir(filePath + folder)):\n",
" prop = filename.split(\".\")[1]\n",
" correctness = filename.split(\".\")[2]\n",
" if correctness not in ['correct','incorrect']:\n",
" continue\n",
" invConstPropList.add(prop)\n",
" count1 = countLines(filePath+folder+'/'+filename)\n",
" if folder not in invConstViolations:\n",
" invConstViolations[folder] = {}\n",
" if prop not in invConstViolations[folder]:\n",
" invConstViolations[folder][prop] = {'correct': 0, 'incorrect': 0, 'paths': []}\n",
" invConstViolations[folder][prop][correctness] = count1\n",
" invConstViolations[folder][prop]['paths'].append(filePath+folder+'/'+filename)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "circular-africa",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"110"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(invConstPropList)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "recreational-world",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "71e0e1be64f54492970176a634e04b60",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"invConstViolationsSummary = {}\n",
"for folder in tqdm(iter(['mandatory','normal','suggestion'])):\n",
" invConstViolationsSummary[folder] = {'correct': 0, 'incorrect': 0}\n",
" for prop in invConstViolations[folder].keys():\n",
" invConstViolationsSummary[folder]['correct'] += invConstViolations[folder][prop]['correct']\n",
" invConstViolationsSummary[folder]['incorrect'] += invConstViolations[folder][prop]['incorrect']\n",
" invConstViolationsSummary[folder]['total'] = invConstViolationsSummary[folder]['correct'] + invConstViolationsSummary[folder]['incorrect']\n",
" invConstViolationsSummary[folder]['percIncorrect'] = invConstViolationsSummary[folder]['incorrect'] / invConstViolationsSummary[folder]['total'] * 100\n",
" invConstViolationsSummary[folder]['propCount'] = len(invConstViolations[folder].keys())"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "headed-singer",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'mandatory': {'correct': 6872,\n",
" 'incorrect': 143,\n",
" 'total': 7015,\n",
" 'percIncorrect': 2.0384889522451886,\n",
" 'propCount': 6},\n",
" 'normal': {'correct': 7489249,\n",
" 'incorrect': 328065,\n",
" 'total': 7817314,\n",
" 'percIncorrect': 4.1966460602708295,\n",
" 'propCount': 100},\n",
" 'suggestion': {'correct': 2150990,\n",
" 'incorrect': 99214,\n",
" 'total': 2250204,\n",
" 'percIncorrect': 4.409111351681892,\n",
" 'propCount': 4}}"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"invConstViolationsSummary"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "russian-steering",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10074533"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"noOfStmts = 0\n",
"for fold in invConstViolationsSummary.keys():\n",
" noOfStmts += invConstViolationsSummary[fold]['total']\n",
"noOfStmts"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "sustained-prediction",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P2673 \n",
" 839 \n",
" 67 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.073951 \n",
" \n",
" \n",
" P4147 \n",
" 286 \n",
" 8 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.027211 \n",
" \n",
" \n",
" P4149 \n",
" 286 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.013793 \n",
" \n",
" \n",
" P2033 \n",
" 1879 \n",
" 25 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.013130 \n",
" \n",
" \n",
" P450 \n",
" 1779 \n",
" 22 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.012215 \n",
" \n",
" \n",
" P1151 \n",
" 1803 \n",
" 17 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.009341 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P2673 839 67 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P4147 286 8 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P4149 286 4 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P2033 1879 25 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P450 1779 22 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P1151 1803 17 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"\n",
" violation_ratio \n",
"P2673 0.073951 \n",
"P4147 0.027211 \n",
"P4149 0.013793 \n",
"P2033 0.013130 \n",
"P450 0.012215 \n",
"P1151 0.009341 "
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"invConstDF1 = pd.DataFrame(invConstViolations['mandatory']).T\n",
"invConstDF1['violation_ratio'] = invConstDF1.apply(lambda p: p.incorrect / (p.correct + p.incorrect), axis=1)\n",
"invConstDF1.sort_values(by=['violation_ratio'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "valid-symposium",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P1434 \n",
" 3677 \n",
" 5003 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.576382 \n",
" \n",
" \n",
" P155 \n",
" 1036647 \n",
" 53103 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.048730 \n",
" \n",
" \n",
" P156 \n",
" 1036636 \n",
" 40868 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.037928 \n",
" \n",
" \n",
" P629 \n",
" 74030 \n",
" 240 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.003231 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P1434 3677 5003 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P155 1036647 53103 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P156 1036636 40868 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P629 74030 240 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"\n",
" violation_ratio \n",
"P1434 0.576382 \n",
"P155 0.048730 \n",
"P156 0.037928 \n",
"P629 0.003231 "
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"invConstDF2 = pd.DataFrame(invConstViolations['suggestion']).T\n",
"invConstDF2['violation_ratio'] = invConstDF2.apply(lambda p: p.incorrect / (p.correct + p.incorrect), axis=1)\n",
"invConstDF2.sort_values(by=['violation_ratio'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "resident-mustang",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" correct \n",
" incorrect \n",
" paths \n",
" violation_ratio \n",
" \n",
" \n",
" \n",
" \n",
" P1605 \n",
" 13 \n",
" 190 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.935961 \n",
" \n",
" \n",
" P3448 \n",
" 605 \n",
" 4575 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.883205 \n",
" \n",
" \n",
" P925 \n",
" 1 \n",
" 5 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.833333 \n",
" \n",
" \n",
" P926 \n",
" 1 \n",
" 5 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.833333 \n",
" \n",
" \n",
" P1029 \n",
" 490 \n",
" 2397 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.830274 \n",
" \n",
" \n",
" P115 \n",
" 6948 \n",
" 24721 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.780606 \n",
" \n",
" \n",
" P5134 \n",
" 23 \n",
" 54 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.701299 \n",
" \n",
" \n",
" P3816 \n",
" 14 \n",
" 27 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.658537 \n",
" \n",
" \n",
" P1283 \n",
" 1405 \n",
" 2423 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.632968 \n",
" \n",
" \n",
" P8625 \n",
" 9 \n",
" 15 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.625000 \n",
" \n",
" \n",
" P5132 \n",
" 81 \n",
" 90 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.526316 \n",
" \n",
" \n",
" P425 \n",
" 2741 \n",
" 2938 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.517345 \n",
" \n",
" \n",
" P2512 \n",
" 221 \n",
" 159 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.418421 \n",
" \n",
" \n",
" P1677 \n",
" 6 \n",
" 4 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.400000 \n",
" \n",
" \n",
" P2578 \n",
" 1111 \n",
" 622 \n",
" [../../allConstraintsAnalysisWRemoved/inverseC... \n",
" 0.358915 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" correct incorrect paths \\\n",
"P1605 13 190 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P3448 605 4575 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P925 1 5 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P926 1 5 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P1029 490 2397 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P115 6948 24721 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P5134 23 54 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P3816 14 27 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P1283 1405 2423 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P8625 9 15 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P5132 81 90 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P425 2741 2938 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P2512 221 159 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P1677 6 4 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"P2578 1111 622 [../../allConstraintsAnalysisWRemoved/inverseC... \n",
"\n",
" violation_ratio \n",
"P1605 0.935961 \n",
"P3448 0.883205 \n",
"P925 0.833333 \n",
"P926 0.833333 \n",
"P1029 0.830274 \n",
"P115 0.780606 \n",
"P5134 0.701299 \n",
"P3816 0.658537 \n",
"P1283 0.632968 \n",
"P8625 0.625000 \n",
"P5132 0.526316 \n",
"P425 0.517345 \n",
"P2512 0.418421 \n",
"P1677 0.400000 \n",
"P2578 0.358915 "
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"invConstDF3 = pd.DataFrame(invConstViolations['normal']).T\n",
"invConstDF3['violation_ratio'] = invConstDF3.apply(lambda p: p.incorrect / (p.correct + p.incorrect), axis=1)\n",
"invConstDF3.sort_values(by=['violation_ratio'],ascending=False).head(15)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "dietary-venue",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"head: cannot open ‘../../allConstraintsAnalysisWRemoved/inverseConstraint/normal/claims.P925.incorrect.tsv’ for reading: No such file or directory\r\n"
]
}
],
"source": [
"!head ../../allConstraintsAnalysisWRemoved/inverseConstraint/normal/claims.P925.incorrect.tsv"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "entire-gauge",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Symmetric Normal Constraint - Violation Ratios')"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"invConstDF3.sort_values(by=['violation_ratio'],ascending=False)['violation_ratio'].plot.hist(bins=100).set_title(\"Symmetric Normal Constraint - Violation Ratios\")"
]
},
{
"cell_type": "markdown",
"id": "working-stable",
"metadata": {},
"source": [
"### Find out time required"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "saved-twelve",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2e8a241c831b4968ae22d06c22c6e85e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/122 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import os\n",
"from tqdm.notebook import tqdm\n",
"\n",
"codepConstViolations = {}\n",
"\n",
"codepConstViolations = {}\n",
"codepConstPropList = set()\n",
"\n",
"def extractTimes(filename):\n",
" times = []\n",
" with open(filename) as f:\n",
" for line in f:\n",
" if \"real\" in line:\n",
" line = line.strip()\n",
" time1 = line.split(\"\\t\")[1]\n",
" mins, sec = time1.split(\"m\")\n",
" mins = int(mins)\n",
" sec = float(sec[:-1])\n",
" times.append(60 * mins + sec)\n",
" return times\n",
"\n",
"# codepConstViolationsSummary = {}\n",
"times = []\n",
"filePath = '/data/wd-correctness/propertiesSplitWRemoved/checkViolations/exec_logs/'\n",
"for filename in tqdm(os.listdir(filePath)):\n",
" if filename.startswith(\"invConst_Validator_new3\"):\n",
" tempTimes = extractTimes(filePath + filename)\n",
" times += tempTimes"
]
},
{
"cell_type": "code",
"execution_count": 56,
"id": "caroline-observation",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"count 110.000000\n",
"mean 7.526318\n",
"std 11.686634\n",
"min 1.519000\n",
"25% 2.624000\n",
"50% 3.298500\n",
"75% 6.463250\n",
"max 80.846000\n",
"dtype: float64\n"
]
}
],
"source": [
"print(pd.Series(times).describe())"
]
},
{
"cell_type": "code",
"execution_count": 57,
"id": "static-conclusion",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Distribution of times (in s) taken for symmetric constraint checks')"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import seaborn as sns\n",
"sns.lineplot(data=pd.Series(times)).set_title(\"Distribution of times (in s) taken for symmetric constraint checks\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "numerical-month",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "stuck-criticism",
"metadata": {},
"source": [
"# Analysis on properties with constraints"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "driven-reference",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[2021-04-03 09:14:12 query]: SQL Translation:\r\n",
"---------------------------------------------\r\n",
" SELECT *\r\n",
" FROM graph_1 AS graph_1_c1\r\n",
" WHERE graph_1_c1.\"label\"=?\r\n",
" PARAS: ['P2302']\r\n",
"---------------------------------------------\r\n"
]
}
],
"source": [
"!kgtk --debug query -i ../../gdrive-kgtk-dump-2020-12-07/claims.properties.tsv.gz \\\n",
" ../../gdrive-kgtk-dump-2020-12-07/qualifiers.properties.tsv.gz \\\n",
" --match \"p: (nodeProp1)-[nodePropEdge:P2302]->()\" \\\n",
" -o ../../constraintsOP/claims.constraints_list.tsv \\\n",
" --graph-cache ~/sqlite3_caches/temp1345.valuetype.sqlite3.db"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "exciting-focus",
"metadata": {},
"outputs": [],
"source": [
"!kgtk unique -i ../../gdrive-kgtk-dump-2020-12-07/claims.properties.tsv.gz --column node1 -o ../../constraintsOP/claims.propList.tsv"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "flush-romania",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"node1\tlabel\tnode2\r\n",
"P10\tcount\t17\r\n",
"P1000\tcount\t10\r\n",
"P1001\tcount\t26\r\n",
"P1002\tcount\t9\r\n",
"P1003\tcount\t20\r\n",
"P1004\tcount\t33\r\n",
"P1005\tcount\t21\r\n",
"P1006\tcount\t26\r\n",
"P1007\tcount\t19\r\n"
]
}
],
"source": [
"!head ../../constraintsOP/claims.propList.tsv"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "chemical-harris",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import os\n",
"props = pd.read_csv(\"../../constraintsOP/claims.constraints_list.tsv\", sep='\\t')"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "higher-underground",
"metadata": {},
"outputs": [],
"source": [
"props2 = props.groupby(['node1']).node2.apply(list)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "light-appreciation",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"8100"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(props2)"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "yellow-helmet",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(2336, 8100)"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cnt = 0\n",
"totalCnt = 0\n",
"for prop in props2.index:\n",
" totalCnt += 1\n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv\")):\n",
" continue\n",
" else:\n",
" cnt += 1\n",
"cnt, totalCnt"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "detected-skiing",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"node1\n",
"P10 [Q21502404, Q21510851, Q21510852, Q52004125, Q...\n",
"P1000 [Q21510856, Q21510865, Q53869507]\n",
"P1001 [Q21502838, Q21503250, Q21510865, Q25796498]\n",
"P1002 [Q21503250, Q21510865]\n",
"P1003 [Q19474404, Q21502404, Q21502410, Q21510851, Q...\n",
" ... \n",
"P1563 [Q19474404, Q21502404, Q21502410, Q21503247, Q...\n",
"P1564 [Q19474404, Q21502404, Q21502410, Q21503247, Q...\n",
"P1565 [Q19474404, Q21502404, Q21502410, Q21503247, Q...\n",
"P1566 [Q19474404, Q21502404, Q21502410, Q21502838, Q...\n",
"P1567 [Q19474404, Q21502404, Q21502410, Q21502838, Q...\n",
"Name: node2, Length: 500, dtype: object"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"props2.head(500)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "processed-perfume",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import os\n",
"props2 = pd.read_csv(\"../../constraintsOP/claims.propList.tsv\", sep='\\t')"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "increasing-graphics",
"metadata": {},
"outputs": [],
"source": [
"props2 = props2.groupby(['node1']).node2.apply(list)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "posted-ukraine",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"8193"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(props2)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "fifth-provision",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(2415, 8193)"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cnt = 0\n",
"totalCnt = 0\n",
"for prop in props2.index:\n",
" totalCnt += 1\n",
" if not(os.path.isfile(\"../../propertiesSplitWRemoved/claims.\"+ prop +\".tsv\")):\n",
" continue\n",
" else:\n",
" cnt += 1\n",
"cnt, totalCnt"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "married-heating",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"node1\n",
"P10 [Q21502404, Q21510851, Q21510852, Q52004125, Q...\n",
"P1000 [Q21510856, Q21510865, Q53869507]\n",
"P1001 [Q21502838, Q21503250, Q21510865, Q25796498]\n",
"P1002 [Q21503250, Q21510865]\n",
"P1003 [Q19474404, Q21502404, Q21502410, Q21510851, Q...\n",
" ... \n",
"P1563 [Q19474404, Q21502404, Q21502410, Q21503247, Q...\n",
"P1564 [Q19474404, Q21502404, Q21502410, Q21503247, Q...\n",
"P1565 [Q19474404, Q21502404, Q21502410, Q21503247, Q...\n",
"P1566 [Q19474404, Q21502404, Q21502410, Q21502838, Q...\n",
"P1567 [Q19474404, Q21502404, Q21502410, Q21502838, Q...\n",
"Name: node2, Length: 500, dtype: object"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"props2.head(500)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "magnetic-conditions",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "kgtkEnv",
"language": "python",
"name": "kgtkenv"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {
"height": "calc(100% - 180px)",
"left": "10px",
"top": "150px",
"width": "318px"
},
"toc_section_display": true,
"toc_window_display": true
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"oldHeight": 122,
"position": {
"height": "40px",
"left": "1170px",
"right": "20px",
"top": "120px",
"width": "250px"
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"varInspector_section_display": "none",
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 5
}