Changeset: da17500c94c4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=da17500c94c4
Modified Files:
        monetdb5/extras/rdf/rdfschema.c
        monetdb5/extras/rdf/rdfschema.h
Branch: rdf
Log Message:

Remove the maxCS struct and add some more fields to CS.


diffs (252 lines):

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
@@ -744,7 +744,7 @@ void freemergeCSset(mergeCSset *csSet){
        int i;
        for(i = 0; i < csSet->nummergeCSadded; i ++){
                free(csSet->items[i].lstProp);
-               free(csSet->items[i].lstParent);
+               free(csSet->items[i].lstConsistsOf);
        }
        free(csSet->items);
        free(csSet);    
@@ -797,7 +797,8 @@ CS* creatCS(oid csId, int numP, oid* buf
        cs->csId = csId;
        cs->numProp = numP; 
        cs->numAllocation = numP; 
-       cs->isSubset = 0; /*By default, this CS is not known to be a subset of 
any other CS*/
+       /*By default, this CS is not known to be a subset of any other CS*/
+       cs->parent = BUN_NONE; 
        #if STOREFULLCS
        cs->lstObj =  (oid*) malloc(sizeof(oid) * numP);
        if (cs->lstObj == NULL){
@@ -883,14 +884,14 @@ mergeCS* mergeTwoCSs(CS cs1, CS cs2, oid
        
        int numCombineP; 
        mergeCS *mergecs = (mergeCS*) malloc (sizeof (mergeCS)); 
-       mergecs->numParent = 2; 
-       mergecs->lstParent = (oid*) malloc(sizeof(oid) * 2);
-
-       //mergecs->lstParent[0] = cs1.csId;  
-       //mergecs->lstParent[1] = cs2.csId; 
-
-       mergecs->lstParent[0] = maxCSid1;  
-       mergecs->lstParent[1] = maxCSid2; 
+       mergecs->numConsistsOf = 2; 
+       mergecs->lstConsistsOf = (oid*) malloc(sizeof(oid) * 2);
+
+       //mergecs->lstConsistsOf[0] = cs1.csId;  
+       //mergecs->lstConsistsOf[1] = cs2.csId; 
+
+       mergecs->lstConsistsOf[0] = maxCSid1;  
+       mergecs->lstConsistsOf[1] = maxCSid2; 
        
        mergecs->lstProp = (oid*) malloc(sizeof(oid) * (cs1.numProp + 
cs2.numProp));  // will be redundant
 
@@ -919,15 +920,15 @@ void mergeACStoExistingmergeCS(CS cs, oi
        oid* _tmp2; 
        oid* oldlstProp; 
 
-        _tmp1 = realloc(mergecs->lstParent, ((mergecs->numParent + 1) * 
sizeof(oid)));
+        _tmp1 = realloc(mergecs->lstConsistsOf, ((mergecs->numConsistsOf + 1) 
* sizeof(oid)));
 
        if (!_tmp1){
                fprintf(stderr, "ERROR: Couldn't realloc memory!\n");
        }
-       mergecs->lstParent = (oid*)_tmp1;
-       //mergecs->lstParent[mergecs->numParent] = cs.csId; 
-       mergecs->lstParent[mergecs->numParent] = maxCSid; 
-       mergecs->numParent++;
+       mergecs->lstConsistsOf = (oid*)_tmp1;
+       //mergecs->lstConsistsOf[mergecs->numConsistsOf] = cs.csId; 
+       mergecs->lstConsistsOf[mergecs->numConsistsOf] = maxCSid; 
+       mergecs->numConsistsOf++;
 
        oldlstProp = malloc (sizeof(oid) * (mergecs->numProp)); 
        memcpy(oldlstProp, mergecs->lstProp, (mergecs->numProp) * sizeof(oid));
@@ -960,15 +961,15 @@ void mergeTwomergeCS(mergeCS *mergecs1, 
        oid* oldlstProp2; 
        int i; 
 
-        _tmp1 = realloc(mergecs1->lstParent, ((mergecs1->numParent + 
mergecs2->numParent) * sizeof(oid)));
+        _tmp1 = realloc(mergecs1->lstConsistsOf, ((mergecs1->numConsistsOf + 
mergecs2->numConsistsOf) * sizeof(oid)));
 
        if (!_tmp1){
                fprintf(stderr, "ERROR: Couldn't realloc memory!\n");
        }
-       mergecs1->lstParent = (oid*)_tmp1;
-       for (i = 0; i < mergecs2->numParent; i++){
-               mergecs1->lstParent[mergecs1->numParent] = 
mergecs2->lstParent[i]; 
-               mergecs1->numParent++;
+       mergecs1->lstConsistsOf = (oid*)_tmp1;
+       for (i = 0; i < mergecs2->numConsistsOf; i++){
+               mergecs1->lstConsistsOf[mergecs1->numConsistsOf] = 
mergecs2->lstConsistsOf[i]; 
+               mergecs1->numConsistsOf++;
        }
 
 
@@ -1036,7 +1037,7 @@ str printFreqCSSet(CSset *freqCSset, oid
 
                        takeOid(cs.csId, &subStr);      
 
-                       printf("CS " BUNFMT " (Freq: %d) | Subject: %s  | 
Parent " BUNFMT " \n", cs.csId, *freq, subStr, csSuperCSMap[cs.csId]);
+                       printf("CS " BUNFMT " (Freq: %d) | Subject: %s  | 
ConsistsOf " BUNFMT " \n", cs.csId, *freq, subStr, csSuperCSMap[cs.csId]);
                        for (j = 0; j < cs.numProp; j++){
                                printf("  P:" BUNFMT " --> \n", cs.lstProp[j]); 
                        }       
@@ -1063,11 +1064,11 @@ str printFreqCSSet(CSset *freqCSset, oid
 
                        takeOid(cs.subject, &subStr);   
                        
-                       fprintf(fout,"CS " BUNFMT " (Freq: %d) | Subject: %s  | 
Parent " BUNFMT " \n", cs.csId, *freq, subStr, csSuperCSMap[cs.csId]);
+                       fprintf(fout,"CS " BUNFMT " (Freq: %d) | Subject: %s  | 
ConsistsOf " BUNFMT " \n", cs.csId, *freq, subStr, csSuperCSMap[cs.csId]);
 
                        // Filter max freq cs set
                        if (csSuperCSMap[cs.csId] == cs.csId){
-                               fprintf(fout2,"CS " BUNFMT " (Freq: %d) | 
Subject: %s  | Parent " BUNFMT " \n", cs.csId, *freq, subStr, 
csSuperCSMap[cs.csId]);
+                               fprintf(fout2,"CS " BUNFMT " (Freq: %d) | 
Subject: %s  | ConsistsOf " BUNFMT " \n", cs.csId, *freq, subStr, 
csSuperCSMap[cs.csId]);
                        }
 
                        for (j = 0; j < cs.numProp; j++){
@@ -1131,9 +1132,9 @@ str printamergeCS(mergeCS cs, int mergec
                                "could not open the tokenizer\n");
        }
 
-       printf("MergeCS %d - (numParent: %d) \n",mergecsid, cs.numParent);
-       for (j = 0; j < cs.numParent; j++){
-               freqcs = freqCSset->items[superCSFreqCSMap[cs.lstParent[j]]];
+       printf("MergeCS %d - (numConsistsOf: %d) \n",mergecsid, 
cs.numConsistsOf);
+       for (j = 0; j < cs.numConsistsOf; j++){
+               freqcs = 
freqCSset->items[superCSFreqCSMap[cs.lstConsistsOf[j]]];
                printf(" " BUNFMT " ", freqcs.csId);
        }
        printf("\n");
@@ -1181,9 +1182,9 @@ str printmergeCSSet(mergeCSset *mergecsS
        for (i = 0; i < nummergecs; i++){
                mergeCS cs = (mergeCS)mergecsSet->items[i];
                if (cs.isRemove == 0){
-                       fprintf(fout, "MergeCS %d (Number of parent: %d) \n",i, 
cs.numParent);
-                       for (j = 0; j < cs.numParent; j++){
-                               freqcs = 
freqCSset->items[superCSFreqCSMap[cs.lstParent[j]]];
+                       fprintf(fout, "MergeCS %d (Number of parent: %d) \n",i, 
cs.numConsistsOf);
+                       for (j = 0; j < cs.numConsistsOf; j++){
+                               freqcs = 
freqCSset->items[superCSFreqCSMap[cs.lstConsistsOf[j]]];
                                fprintf(fout, " " BUNFMT " ", freqcs.csId);
                        }
                        fprintf(fout, "\n");
@@ -1645,25 +1646,25 @@ void getMaximumFreqCSs(CSset *freqCSset,
        printf("Retrieving maximum frequent CSs: \n");
 
        for (i = 0; i < numFreqCS; i++){
-               if (freqCSset->items[i].isSubset == 1) continue;
+               if (freqCSset->items[i].parent != BUN_NONE) continue;
                for (j = (i+1); j < numFreqCS; j++){
                        if (isSubset(freqCSset->items[i].lstProp, 
freqCSset->items[j].lstProp,  
                                        
freqCSset->items[i].numProp,freqCSset->items[j].numProp) == 1) { 
                                /* CSj is a subset of CSi */
-                               freqCSset->items[j].isSubset = 1; 
+                               freqCSset->items[j].parent = 
freqCSset->items[i].csId; 
                                csSuperCSMap[freqCSset->items[j].csId] = 
freqCSset->items[i].csId;
                        }
                        else if (isSubset(freqCSset->items[j].lstProp, 
freqCSset->items[i].lstProp,  
                                        
freqCSset->items[j].numProp,freqCSset->items[i].numProp) == 1) { 
                                /* CSj is a subset of CSi */
-                               freqCSset->items[i].isSubset = 1; 
+                               freqCSset->items[i].parent = 
freqCSset->items[j].csId;; 
                                csSuperCSMap[freqCSset->items[i].csId] = 
freqCSset->items[j].csId;
                                break; 
                        }
                        
                } 
                /* By the end, if this CS is not a subset of any other CS */
-               if (freqCSset->items[i].isSubset == 0){
+               if (freqCSset->items[i].parent == BUN_NONE){
                        numMaxCSs++;
                        csSuperCSMap[freqCSset->items[i].csId] = 
freqCSset->items[i].csId;
                        //printCS( freqCSset->items[i]); 
@@ -1683,7 +1684,7 @@ void getMaximumFreqCSs(CSset *freqCSset,
 
        //Tunning
        for (i = 0; i < numFreqCS; i++){
-               if (freqCSset->items[i].isSubset == 1){
+               if (freqCSset->items[i].parent != BUN_NONE){
                        tmpCSId = freqCSset->items[i].csId; 
                        while (csSuperCSMap[tmpCSId] != tmpCSId){
                                tmpCSId = csSuperCSMap[tmpCSId];        // 
tracing to the maximum CS
@@ -1727,7 +1728,7 @@ void mergeMaximumFreqCSs(CSset *freqCSse
 
 
        for (i = 0; i < freqCSset->numCSadded; i++){
-               if (freqCSset->items[i].isSubset == 0){
+               if (freqCSset->items[i].parent == BUN_NONE){
                        superCSFreqCSMap[maxCSid] = i; 
                        maxCSid++;
                }
@@ -1882,7 +1883,7 @@ void mergeMaximumFreqCSsAll(CSset *freqC
 
 
        for (i = 0; i < freqCSset->numCSadded; i++){
-               if (freqCSset->items[i].isSubset == 0){
+               if (freqCSset->items[i].parent == BUN_NONE){
                        superCSFreqCSMap[maxCSid] = i; 
                        maxCSid++;
                }
@@ -1955,8 +1956,8 @@ void mergeMaximumFreqCSsAll(CSset *freqC
                                        mergeTwomergeCS(mergecs1, mergecs2,0,0);
 
                                        //Re-map for all maxCS in mergecs2
-                                       for (k = 0; k < mergecs2->numParent; 
k++){
-                                               
superCSMergeMaxCSMap[mergecs2->lstParent[k]] = superCSMergeMaxCSMap[i];
+                                       for (k = 0; k < 
mergecs2->numConsistsOf; k++){
+                                               
superCSMergeMaxCSMap[mergecs2->lstConsistsOf[k]] = superCSMergeMaxCSMap[i];
                                        }
                                }
                        }
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
@@ -62,27 +62,19 @@ typedef struct CS
        oid*    lstProp;        //List of properties' Ids
        int     numProp;
        int     numAllocation;
-       char    isSubset; 
+       //char  isSubset; 
+       oid     parent; 
        #if STOREFULLCS
        oid     subject;        //A subject
        oid*    lstObj;         //List of sample objects
        #endif
+       
+       char    type; 
+       int     support; 
+       int     coverage; 
 } CS;
 
 
-typedef struct maxCS
-{
-       oid     csId;           //Id of the CS
-       oid*    lstProp;        //List of properties' Ids
-       int     numProp;
-       int     numAllocation;
-       int     support;        //Sum of all subCS's frequency
-       #if STOREFULLCS
-       oid     subject;        //A subject
-       oid*    lstObj;         //List of sample objects
-       #endif
-} maxCS; 
-
 typedef struct SubCS {
        //oid   csId; 
        oid     subCSId;
@@ -92,8 +84,8 @@ typedef struct SubCS {
 } SubCS; 
 
 typedef struct mergeCS {       // CS formed by merging CS id1 and CS id2       
-       oid*    lstParent;      
-       int     numParent; 
+       oid*    lstConsistsOf;  
+       int     numConsistsOf; 
        oid*    lstProp; 
        int     numProp; 
        int     support;
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to