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

Get statistics if infrequent props are removed


diffs (160 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
@@ -492,12 +492,10 @@ getObjType(oid objOid){
  * 
  * */
 static 
-CSPropTypes* initCSPropTypes(CSset* freqCSset, int numMergedCS){
+void initCSPropTypes(CSPropTypes* csPropTypes, CSset* freqCSset, int 
numMergedCS){
        int numFreqCS = freqCSset->numCSadded;
        int i, j, k ;
        int id; 
-
-       CSPropTypes* csPropTypes = (CSPropTypes*)GDKmalloc(sizeof(CSPropTypes) 
* numMergedCS); 
        
        id = 0; 
        for (i = 0; i < numFreqCS; i++){
@@ -539,7 +537,7 @@ CSPropTypes* initCSPropTypes(CSset* freq
 
        assert(id == numMergedCS);
 
-       return csPropTypes;
+       //return csPropTypes;
 }
 
 static 
@@ -1597,7 +1595,14 @@ str printFreqCSSet(CSset *freqCSset, BAT
                                GDKfree(subStr);
                        }
                        else{
-                               fprintf(fout,"CS " BUNFMT " (Freq: %d) | 
Subject: NOTAVAI  | FreqParentIdx %d \n", cs.csId, *freq, cs.parentFreqIdx);
+                               if (labels[i].name == BUN_NONE) {
+                                       fprintf(fout,"CS " BUNFMT " - FreqId %d 
- Name: %s  (Freq: %d) | FreqParentIdx %d \n", cs.csId, i, "DUMMY", *freq, 
cs.parentFreqIdx);
+                               } else {
+                                       str labelStr;
+                                       takeOid(labels[i].name, &labelStr);
+                                       fprintf(fout,"CS " BUNFMT " - FreqId %d 
- Name: %s  (Freq: %d) | FreqParentIdx %d \n", cs.csId, i, labelStr, *freq, 
cs.parentFreqIdx);
+                                       GDKfree(labelStr);
+                               }
                        }
                        #endif  
 
@@ -3652,7 +3657,7 @@ static void getStatisticFinalCSs(CSset *
        //int   *csPropNum; 
        //int   *csFreq; 
        FILE    *fout; 
-       int     i ; 
+       int     i,j ; 
        char    filename[100];
        char    tmpStr[20];
        int     maxNumtriple; 
@@ -3660,6 +3665,7 @@ static void getStatisticFinalCSs(CSset *
        int     numMergeCS = 0; 
        int     totalCoverage = 0; 
        int     freqId; 
+       int     maxNumProp, tmpNumProp; 
 
        printf("Get statistics of final CSs ....");
 
@@ -3690,6 +3696,32 @@ static void getStatisticFinalCSs(CSset *
        printf("Min number of triples coverred by one final CS: %d \n", 
minNumtriple);
        printf("Avg number of triples coverred by one final CS: %f \n", 
(float)(totalCoverage/numMergeCS));
 
+       //Check if remove all non-frequent Prop
+       maxNumtriple = 0;
+       minNumtriple = INT_MAX;
+       maxNumProp = 0; 
+       tmpNumProp = 0;
+       for (i = 0; i < curNumMergeCS; i++){
+               freqId = mergeCSFreqCSMap[i]; 
+               if (freqCSset->items[freqId].parentFreqIdx == -1){              
// Check whether it is a maximumCS
+                       // Output the result 
+                       tmpNumProp = freqCSset->items[freqId].numProp;  
+                       for (j = 0; j < freqCSset->items[freqId].numProp; j++){
+                               //Check infrequent Prop
+                               if (freqCSset->items[freqId].lstPropSupport[j] 
< freqCSset->items[freqId].coverage * INFREQ_PROP_THRESHOLD){
+                                       totalCoverage = totalCoverage - 
freqCSset->items[freqId].lstPropSupport[j];
+                                       tmpNumProp--; 
+                               }
+                       }
+
+                       if (tmpNumProp > maxNumProp) maxNumProp = tmpNumProp; 
+               }
+       }
+
+       printf("If Removing all INFREQUENT Prop \n");
+       printf("Max number of props: %d \n", maxNumProp);
+       printf("Total " BUNFMT " triples, coverred by final CSs: %d  (%f 
percent) \n", BATcount(sbat), totalCoverage, 100 * 
((float)totalCoverage/BATcount(sbat)));
+
        //Check if remove all the final CS covering less than 10000 triples
        
        totalCoverage = 0;
@@ -3701,7 +3733,6 @@ static void getStatisticFinalCSs(CSset *
                freqId = mergeCSFreqCSMap[i]; 
                if (freqCSset->items[freqId].parentFreqIdx == -1 && 
freqCSset->items[freqId].coverage > MINIMUM_TABLE_SIZE){            // Check 
whether it is a maximumCS
                        // Output the result 
-                       fprintf(fout, BUNFMT " %d  %d  %d\n", 
freqCSset->items[freqId].csId, 
freqCSset->items[freqId].numProp,freqCSset->items[freqId].support, 
freqCSset->items[freqId].coverage); 
                        if (freqCSset->items[freqId].coverage > maxNumtriple) 
maxNumtriple = freqCSset->items[freqId].coverage;
                        if (freqCSset->items[freqId].coverage < minNumtriple) 
minNumtriple = freqCSset->items[freqId].coverage;
                        
@@ -3710,7 +3741,7 @@ static void getStatisticFinalCSs(CSset *
                }
        }
        
-       printf("AFTER removing all the 'small' final CSs  ==> Only %d final CSs 
\n", numMergeCS);
+       printf("IF Removing all the 'SMALL' final CSs  ==> Only %d final CSs 
\n", numMergeCS);
        printf("Total " BUNFMT " triples, coverred by final CSs: %d  (%f 
percent) \n", BATcount(sbat), totalCoverage, 100 * 
((float)totalCoverage/BATcount(sbat)));
        printf("Max number of triples coverred by one final CS: %d \n", 
maxNumtriple);
        printf("Min number of triples coverred by one final CS: %d \n", 
minNumtriple);
@@ -6081,7 +6112,8 @@ RDFreorganize(int *ret, CStableStat *cst
        oi = bat_iterator(obat); 
 
        /* Get possible types of each property in a table (i.e., mergedCS) */
-       csPropTypes = initCSPropTypes(freqCSset, numTables);
+       csPropTypes = (CSPropTypes*)GDKmalloc(sizeof(CSPropTypes) * numTables); 
+       initCSPropTypes(csPropTypes, freqCSset, numTables);
        RDFExtractCSPropTypes(ret, sbat, si, pi, oi, subjCSMap, 
csTblIdxMapping, csPropTypes, maxNumPwithDup);
        genCSPropTypesColIdx(csPropTypes, numTables, freqCSset);
        printCSPropTypes(csPropTypes, numTables, freqCSset, *freqThreshold);
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
@@ -185,6 +185,8 @@ typedef struct SubCSSet{
                                    // the CS's to-be-merged in this rule must 
cover > MIN_FROMTABLE_SIZE_S6 / MIN_PERCETAGE_S6 triples
 #define MINIMUM_TABLE_SIZE 10000   //The minimum number of triples coverred by 
a table (i.e., a final CS) 
 #define SAMPLE_FILTER_THRESHOLD 1  // SAMPLE_FILTER_THRESHOLD/ 100     
+#define        INFREQ_PROP_THRESHOLD   0.001
+
 
 typedef struct CSset{
        CS* items;
@@ -254,7 +256,7 @@ typedef struct CStableStat {
        //sql_schema*   schema;         
        CStable*        lstcstable; 
        #if CSTYPE_TABLE
-       CStableEx*        lstcstableEx;
+       CStableEx*      lstcstableEx;
        oid**           lastInsertedSEx; 
        #endif
        BAT*            pbat; 
diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx
--- a/sql/backends/monet5/sql.mx
+++ b/sql/backends/monet5/sql.mx
@@ -7703,7 +7703,7 @@ SQLrdfreorganize(Client cntxt, MalBlkPtr
        mbat = mvc_bind(m, *schema, "map0", "lexical",0);
 
        cstablestat = (CStableStat *) malloc (sizeof (CStableStat));
-
+       
        rethrow("sql.rdfreorganize", msg, RDFreorganize(&ret, cstablestat, 
&sbat->batCacheid, &pbat->batCacheid, 
                                &obat->batCacheid, &mbat->batCacheid, 
threshold, mode));
 
@@ -7713,7 +7713,6 @@ SQLrdfreorganize(Client cntxt, MalBlkPtr
                BBPunfix(pbat->batCacheid);
                BBPunfix(obat->batCacheid); 
                BBPunfix(mbat->batCacheid);
-               
                freeCStableStat(cstablestat); 
                //free(cstablestat);
                return MAL_SUCCEED; 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to