Changeset: 70be5faa3762 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=70be5faa3762 Modified Files: monetdb5/extras/rdf/rdflabels.c monetdb5/extras/rdf/rdfschema.c monetdb5/extras/rdf/rdfschema.h Branch: rdf Log Message:
Modify the parameter list in the updateLabel function diffs (209 lines): diff --git a/monetdb5/extras/rdf/rdflabels.c b/monetdb5/extras/rdf/rdflabels.c --- a/monetdb5/extras/rdf/rdflabels.c +++ b/monetdb5/extras/rdf/rdflabels.c @@ -1690,14 +1690,13 @@ void printUML2(CSset *freqCSset, CSlabel memcpy(labelStrEscaped, labelStrShort, (strlen(labelStrShort) + 1)); escapeURI(labelStrEscaped); GDKfree(labelStrShort); - GDKfree(labelStr); #else labelStrEscaped = (str) GDKmalloc(sizeof(char) * (strlen(labelStr) + 1)); if (!labelStrEscaped) fprintf(stderr, "ERROR: Couldn't malloc memory!\n"); memcpy(labelStrEscaped, labelStr, (strlen(labelStr) + 1)); escapeURI(labelStrEscaped); +#endif GDKfree(labelStr); -#endif } fprintf(fout, "<TR><TD WIDTH=\"%d\"><B>%s (#triples: %d)</B></TD></TR>\n", width, labelStrEscaped, cs.coverage); @@ -2007,6 +2006,7 @@ CSlabel* initLabels(CSset *freqCSset) { labels = (CSlabel *) GDKmalloc(sizeof(CSlabel) * freqCSset->numCSadded); if (!labels) fprintf(stderr, "ERROR: Couldn't malloc memory!\n"); for (i = 0; i < freqCSset->numCSadded; ++i) { + labels[i].name = BUN_NONE; labels[i].candidates = NULL; labels[i].candidatesCount = 0; labels[i].hierarchy = NULL; @@ -2464,11 +2464,13 @@ str updateLabel(int ruleNumber, CSset *f int tmpMaxCoverage; int tmpFreqId; #endif - + (void) lstFreqId; + (void) numIds; if (newCS) { // realloc labels *labels = GDKrealloc(*labels, sizeof(CSlabel) * freqCSset->numCSadded); if (!(*labels)) fprintf(stderr, "ERROR: Couldn't realloc memory!\n"); + (*labels)[mergeCSFreqId].name = BUN_NONE; (*labels)[mergeCSFreqId].candidates = NULL; (*labels)[mergeCSFreqId].candidatesCount = 0; (*labels)[mergeCSFreqId].hierarchy = NULL; @@ -2510,6 +2512,7 @@ str updateLabel(int ruleNumber, CSset *f // copy hierarchy from CS freqCS1 label->hierarchyCount = (*labels)[freqCS1].hierarchyCount; if (label->hierarchyCount > 0) { + if (label->hierarchy != NULL) GDKfree(label->hierarchy); label->hierarchy = (oid *) GDKmalloc(sizeof(oid) * label->hierarchyCount); if (!label->hierarchy) fprintf(stderr, "ERROR: Couldn't malloc memory!\n"); for (i = 0; i < label->hierarchyCount; ++i) { @@ -2598,6 +2601,7 @@ str updateLabel(int ruleNumber, CSset *f // hierarchy label->hierarchyCount = big->hierarchyCount; if (label->hierarchyCount > 0) { + if (label->hierarchy != NULL) GDKfree(label->hierarchy); label->hierarchy = (oid *) GDKmalloc(sizeof(oid) * label->hierarchyCount); if (!label->hierarchy) fprintf(stderr, "ERROR: Couldn't malloc memory!\n"); for (i = 0; i < label->hierarchyCount; ++i) { @@ -2617,7 +2621,8 @@ str updateLabel(int ruleNumber, CSset *f void freeLabels(CSlabel* labels, CSset* freqCSset) { int i; - for (i = 0; i < freqCSset->numOrigFreqCS; ++i) { // do not use numCSadded because of additional mergeCS + //for (i = 0; i < freqCSset->numOrigFreqCS; ++i) { // do not use numCSadded because of additional mergeCS + for (i = 0; i < freqCSset->numCSadded; ++i) { if (labels[i].numProp > 0) GDKfree(labels[i].lstProp); diff --git a/monetdb5/extras/rdf/rdfschema.c b/monetdb5/extras/rdf/rdfschema.c --- a/monetdb5/extras/rdf/rdfschema.c +++ b/monetdb5/extras/rdf/rdfschema.c @@ -1106,7 +1106,7 @@ CS* mergeTwoCSs(CS cs1, CS cs2, int freq int numCombineP = 0; CS *mergecs = (CS*) malloc (sizeof (CS)); - mergecs->type = MERGECS; + mergecs->type = (char)MERGECS; mergecs->numConsistsOf = 2; mergecs->lstConsistsOf = (int*) malloc(sizeof(int) * 2); @@ -1129,6 +1129,9 @@ CS* mergeTwoCSs(CS cs1, CS cs2, int freq #if COLORINGPROP mergecs->lstPropSupport = NULL; #endif + #if STOREFULLCS + mergecs->lstObj = NULL; + #endif mergecs->support = cs1.support + cs2.support; mergecs->coverage = cs1.coverage + cs2.coverage; mergecs->parentFreqIdx = -1; @@ -1348,7 +1351,7 @@ void updateConsistsOfListAndSupport(CSse Multi-way merging for list of freqCS */ static -int* mergeMultiCS(CSset *freqCSset, int *lstFreqId, int num, oid *mergecsId,int *retNumDistinct){ +int* mergeMultiCS(CSset *freqCSset, int *lstFreqId, int num, oid *mergecsId,int *retNumDistinct, int *isNew, int *retFreqIdx){ int i; int *lstMergeCSFreqId; @@ -1450,6 +1453,9 @@ int* mergeMultiCS(CSset *freqCSset, int free(lstMergeCSFreqId); *retNumDistinct = numDistinct; + *isNew = 1 - isExistingMergeCS; + *retFreqIdx = mergecsFreqIdx; + return lstDistinctFreqId; } @@ -2878,10 +2884,14 @@ void mergeMaxFreqCSByS1(CSset *freqCSset #else int *lstDistinctFreqId = NULL; int numDistinct = 0; + int isNew = 0; + int mergeFreqIdx = -1; #endif LabelStat *labelStat = NULL; oid *name; - + (void) name; + (void) ontmetadata; + (void) ontmetadataCount; labelStat = initLabelStat(); buildLabelStat(labelStat, (*labels), freqCSset, TOPK); printf("Num FreqCSadded before using S1 = %d \n", freqCSset->numCSadded); @@ -2891,16 +2901,18 @@ void mergeMaxFreqCSByS1(CSset *freqCSset if (labelStat->lstCount[i] > 1){ /*TODO: Multi-way merge */ #if USE_MULTIWAY_MERGING - lstDistinctFreqId = mergeMultiCS(freqCSset, labelStat->freqIdList[i], labelStat->lstCount[i], mergecsId, &numDistinct); + lstDistinctFreqId = mergeMultiCS(freqCSset, labelStat->freqIdList[i], labelStat->lstCount[i], mergecsId, &numDistinct, &isNew, &mergeFreqIdx); if (lstDistinctFreqId != NULL){ - updateLabel(S1, freqCSset, labels, 1, freqCSset->numCSadded - 1, -1, -1, *name, ontmetadata, ontmetadataCount, lstDistinctFreqId, numDistinct); + updateLabel(S1, freqCSset, labels, isNew, mergeFreqIdx, -1, -1, *name, ontmetadata, ontmetadataCount, lstDistinctFreqId, numDistinct); } #else freqId1 = labelStat->freqIdList[i][0]; - cs1 = (CS*) &(freqCSset->items[freqId1]); + cs1 = &(freqCSset->items[freqId1]); + if (i == 89) + printf("Check here \n"); for (j = 1; j < labelStat->lstCount[i]; j++){ freqId2 = labelStat->freqIdList[i][j]; - cs2 = (CS*) &(freqCSset->items[freqId2]); + cs2 = &(freqCSset->items[freqId2]); //Check whether these CS's belong to any mergeCS if (cs1->parentFreqIdx == -1 && cs2->parentFreqIdx == -1){ /* New merge */ mergecs = mergeTwoCSs(*cs1,*cs2, freqId1,freqId2, *mergecsId); @@ -2915,7 +2927,7 @@ void mergeMaxFreqCSByS1(CSset *freqCSset } else if (cs1->parentFreqIdx == -1 && cs2->parentFreqIdx != -1){ existMergecsId = cs2->parentFreqIdx; - existmergecs = (CS*) &(freqCSset->items[existMergecsId]); + existmergecs = &(freqCSset->items[existMergecsId]); mergeACStoExistingmergeCS(*cs1,freqId1, existmergecs); cs1->parentFreqIdx = existMergecsId; updateLabel(S1, freqCSset, labels, 0, existMergecsId, freqId1, freqId2, *name, ontmetadata, ontmetadataCount, NULL, -1); @@ -2923,14 +2935,14 @@ void mergeMaxFreqCSByS1(CSset *freqCSset else if (cs1->parentFreqIdx != -1 && cs2->parentFreqIdx == -1){ existMergecsId = cs1->parentFreqIdx; - existmergecs = (CS*)&(freqCSset->items[existMergecsId]); + existmergecs = &(freqCSset->items[existMergecsId]); mergeACStoExistingmergeCS(*cs2,freqId2, existmergecs); cs2->parentFreqIdx = existMergecsId; updateLabel(S1, freqCSset, labels, 0, existMergecsId, freqId1, freqId2, *name, ontmetadata, ontmetadataCount, NULL, -1); } else if (cs1->parentFreqIdx != cs2->parentFreqIdx){ - mergecs1 = (CS*)&(freqCSset->items[cs1->parentFreqIdx]); - mergecs2 = (CS*)&(freqCSset->items[cs2->parentFreqIdx]); + mergecs1 = &(freqCSset->items[cs1->parentFreqIdx]); + mergecs2 = &(freqCSset->items[cs2->parentFreqIdx]); mergeTwomergeCS(mergecs1, mergecs2, cs1->parentFreqIdx); @@ -2968,6 +2980,8 @@ void mergeMaxFreqCSByS6(CSrel *csrelMerg #else int *lstDistinctFreqId = NULL; int numDistinct = 0; + int isNew = 0; + int mergeFreqIdx = -1; #endif char filename[100]; @@ -3011,10 +3025,10 @@ void mergeMaxFreqCSByS6(CSrel *csrelMerg * */ //mergeMultiPropList(freqCSset, csRelSum->freqIdList[j],csRelSum->numPropRef[j] , &numCombinedP); #if USE_MULTIWAY_MERGING - lstDistinctFreqId = mergeMultiCS(freqCSset, csRelSum->freqIdList[j],csRelSum->numPropRef[j], mergecsId, &numDistinct); + lstDistinctFreqId = mergeMultiCS(freqCSset, csRelSum->freqIdList[j],csRelSum->numPropRef[j], mergecsId, &numDistinct, &isNew, &mergeFreqIdx); if (lstDistinctFreqId != NULL){ - updateLabel(S5, freqCSset, labels, 1, freqCSset->numCSadded - 1, -1, -1, BUN_NONE, ontmetadata, ontmetadataCount, lstDistinctFreqId, numDistinct); + updateLabel(S5, freqCSset, labels, isNew, mergeFreqIdx, -1, -1, BUN_NONE, ontmetadata, ontmetadataCount, lstDistinctFreqId, numDistinct); } #else freqId1 = csRelSum->freqIdList[j][0]; diff --git a/monetdb5/extras/rdf/rdfschema.h b/monetdb5/extras/rdf/rdfschema.h --- a/monetdb5/extras/rdf/rdfschema.h +++ b/monetdb5/extras/rdf/rdfschema.h @@ -104,7 +104,7 @@ typedef struct PropStat { #define USE_LABEL_FOR_MERGING 1 // Use the labels received from labeling process for finding mergeCS #define TOPK 1 //Check top 3 candidate #define MAX_SUB_SUPER_NUMPROP_DIF 3 -#define USE_MULTIWAY_MERGING 1 +#define USE_MULTIWAY_MERGING 0 #define MINIMIZE_CONSISTSOF 1 /*Only store the minimize list of consistsof CS's Id. Specifically, the consistsOf list only contains _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list