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

Reply via email to