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

Group all the relationships starting from the same MaxFreqCS to reduce the 
number of relationships


diffs (113 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
@@ -296,14 +296,16 @@ void printCSrelSet(CSrel *csrelSet, char
  * */
 
 static 
-void printCSrelWithMaxSet(oid* csSuperCSMap, CSrel *csrelWithMaxSet, CSrel 
*csrelSet, char *csFreqMap, BAT* freqBat, int num, int freqThreshold){
+void printCSrelWithMaxSet(oid* csSuperCSMap, CSrel *csrelWithMaxSet, CSrel 
*csrelBetweenMaxSet, CSrel *csrelSet, char *csFreqMap, BAT* freqBat, int num, 
int freqThreshold){
 
        int     i; 
        int     j; 
        int     *freq; 
-       FILE    *fout; 
-       char    filename[100];
-       char    tmpStr[20];
+       FILE    *fout, *fout2; 
+       char    filename[100], filename2[100];
+       char    tmpStr[50];
+       oid     maxCSoid; 
+
 
        strcpy(filename, "csRelatioinshipWithMaxFreqCS");
        sprintf(tmpStr, "%d", freqThreshold);
@@ -312,7 +314,7 @@ void printCSrelWithMaxSet(oid* csSuperCS
 
        fout = fopen(filename,"wt"); 
 
-       // Merge the relationship
+       // Merge the relationships to create csrelWithMaxSet
        for (i = 0; i < num; i++){
                if (csrelSet[i].numRef != 0){
                        for (j = 0; j < csrelSet[i].numRef; j++){               
@@ -335,8 +337,42 @@ void printCSrelWithMaxSet(oid* csSuperCS
                }
        }
 
+       fclose(fout);
 
-       fclose(fout);
+
+       /*------------------------*/
+
+       strcpy(filename2, "csRelatioinshipBetweenMaxFreqCS");
+       sprintf(tmpStr, "%d", freqThreshold);
+       strcat(filename2, tmpStr);
+       strcat(filename2, ".txt");
+
+       fout2 = fopen(filename2,"wt"); 
+
+       // Merge the csrelWithMaxSet --> csrelBetweenMaxSet
+       for (i = 0; i < num; i++){
+               maxCSoid = csSuperCSMap[csrelWithMaxSet[i].origCSoid];
+               if (csrelWithMaxSet[i].numRef != 0 && maxCSoid != BUN_NONE){
+                       for (j = 0; j < csrelWithMaxSet[i].numRef; j++){        
        
+                               
assert(csSuperCSMap[csrelWithMaxSet[i].lstRefCSoid[j]] == 
csrelWithMaxSet[i].lstRefCSoid[j]);
+                               addReltoCSRelWithFreq(maxCSoid, 
csSuperCSMap[csrelWithMaxSet[i].lstRefCSoid[j]], csrelWithMaxSet[i].lstCnt[j], 
&csrelBetweenMaxSet[maxCSoid]);
+                       }
+               }
+       }
+       
+       for (i = 0; i < num; i++){
+               if (csrelBetweenMaxSet[i].numRef != 0){ //Only print CS with FK
+                       fprintf(fout2, "Relationship %d: ", i);
+                       freq  = (int *) Tloc(freqBat, i);
+                       fprintf(fout2, "CS " BUNFMT " (Freq: %d, isFreq: %d) 
--> ", csrelBetweenMaxSet[i].origCSoid, *freq, csFreqMap[i]);
+                       for (j = 0; j < csrelBetweenMaxSet[i].numRef; j++){
+                               fprintf(fout2, BUNFMT " (%d) ", 
csrelBetweenMaxSet[i].lstRefCSoid[j],csrelBetweenMaxSet[i].lstCnt[j]);  
+                       }       
+                       fprintf(fout2, "\n");
+               }
+       }
+
+       fclose(fout2);
 }
 
 static 
@@ -1292,6 +1328,7 @@ RDFextractCSwithTypes(int *ret, bat *sba
        char            *csFreqMap; 
        CSrel           *csrelSet;
        CSrel           *csrelWithMaxFreqSet;
+       CSrel           *csrelBetweenMaxFreqSet; 
        SubCSSet        *csSubCSMap; 
        oid             *csSuperCSMap;  
 
@@ -1351,7 +1388,6 @@ RDFextractCSwithTypes(int *ret, bat *sba
 
        csrelSet = initCSrelset(maxCSoid + 1);
 
-       csrelWithMaxFreqSet = initCSrelset(maxCSoid + 1);
 
        csSubCSMap = initCS_SubCSMap(maxCSoid +1); 
 
@@ -1371,7 +1407,10 @@ RDFextractCSwithTypes(int *ret, bat *sba
        getMaximumFreqCSs(freqCSset, csSuperCSMap, maxCSoid + 1); 
 
 
-       printCSrelWithMaxSet(csSuperCSMap, csrelWithMaxFreqSet, 
csrelSet,csFreqMap, csBats->freqBat, maxCSoid + 1, *freqThreshold);  
+       csrelWithMaxFreqSet = initCSrelset(maxCSoid + 1);       // CS --> 
Reference MaxCSs
+       csrelBetweenMaxFreqSet = initCSrelset(maxCSoid + 1);    // MaxCS --> 
Reference MaxCSs
+
+       printCSrelWithMaxSet(csSuperCSMap, csrelWithMaxFreqSet, 
csrelBetweenMaxFreqSet, csrelSet,csFreqMap, csBats->freqBat, maxCSoid + 1, 
*freqThreshold);  
 
 
        //getStatisticCSsBySize(csMap,maxNumProp); 
@@ -1391,6 +1430,7 @@ RDFextractCSwithTypes(int *ret, bat *sba
 
        freeCSrelSet(csrelSet, maxCSoid + 1); 
        freeCSrelSet(csrelWithMaxFreqSet, maxCSoid + 1); 
+       freeCSrelSet(csrelBetweenMaxFreqSet, maxCSoid + 1);  
 
        freeCSBats(csBats);
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to