Changeset: b36eefe8fec5 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b36eefe8fec5
Modified Files:
monetdb5/extras/rdf/rdfschema.c
Branch: rdf
Log Message:
Report the cummulative frequency for maximumCS
diffs (123 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
@@ -1167,7 +1167,7 @@ void printCS(CS cs){
* Here maximum frequent CS is a CS that there exist no other CS which
contains that CS
* */
static
-void getMaximumFreqCSs(CSset *freqCSset, oid* csSuperCSMap, BAT* coverageBat,
int* superCSCoverage, int numCS){
+void getMaximumFreqCSs(CSset *freqCSset, oid* csSuperCSMap, BAT* coverageBat,
int* superCSCoverage, BAT* freqBat, int* superCSFrequency, int numCS){
int numFreqCS = freqCSset->numCSadded;
int i, j;
@@ -1175,6 +1175,7 @@ void getMaximumFreqCSs(CSset *freqCSset,
oid tmpCSId;
int* coverage;
+ int* freq;
printf("Retrieving maximum frequent CSs: \n");
@@ -1230,8 +1231,12 @@ void getMaximumFreqCSs(CSset *freqCSset,
for (i = 0; i < numFreqCS; i++){
tmpCSId = freqCSset->items[i].csId;
+
coverage = (int*) Tloc(coverageBat, tmpCSId);
superCSCoverage[csSuperCSMap[tmpCSId]] += *coverage;
+
+ freq = (int*) Tloc(freqBat, tmpCSId);
+ superCSFrequency[csSuperCSMap[tmpCSId]] += *freq;
}
/*
@@ -1358,7 +1363,7 @@ static void getStatisticCSsBySupports(BA
}
-static void getStatisticMaxCSs(BAT *pOffsetBat, BAT *freqBat, BAT *fullPBat,
oid* csSuperCSMap, int* superCSCoverage, char isWriteToFile, int freqThreshold){
+static void getStatisticMaxCSs(BAT *pOffsetBat, BAT *fullPBat, oid*
csSuperCSMap, int* superCSCoverage, int* superCSFrequency, char isWriteToFile,
int freqThreshold){
//int *csPropNum;
//int *csFreq;
@@ -1366,8 +1371,7 @@ static void getStatisticMaxCSs(BAT *pOff
oid *offset, *offset2;
int numP;
BUN p, q;
- BATiter pi, freqi;
- int *freq;
+ BATiter pi;
char filename[100];
char tmpStr[20];
@@ -1382,7 +1386,6 @@ static void getStatisticMaxCSs(BAT *pOff
fprintf(fout, " csId #Prop #frequency maxCSid coverage\n");
pi = bat_iterator(pOffsetBat);
- freqi = bat_iterator(freqBat);
BATloop(pOffsetBat, p, q){
offset = (oid *) BUNtloc(pi, p);
@@ -1394,15 +1397,13 @@ static void getStatisticMaxCSs(BAT *pOff
else //Last element
numP = BUNlast(fullPBat) - *offset;
- freq = (int *) BUNtloc(freqi, p);
-
if (csSuperCSMap[p] == p){ // Check whether it is
a maximumCS
// Output the result
if (isWriteToFile == 0)
- printf(BUNFMT " %d %d " BUNFMT " %d\n", p,
numP, *freq, csSuperCSMap[p], superCSCoverage[p]);
+ printf(BUNFMT " %d %d %d\n", p, numP,
superCSFrequency[p], superCSCoverage[p]);
else
- fprintf(fout, BUNFMT " %d %d " BUNFMT "
%d\n", p, numP, *freq, csSuperCSMap[p], superCSCoverage[p]);
+ fprintf(fout, BUNFMT " %d %d %d\n", p, numP,
superCSFrequency[p], superCSCoverage[p]);
}
}
@@ -1735,6 +1736,7 @@ RDFextractCSwithTypes(int *ret, bat *sba
oid *csSuperCSMap;
int *superCSCoverage; /* Store the number of triples
coverred by each superCS
This array will have many NULL
values */
+ int *superCSFrequency; /* Store the frequency of each
superCS (=sum of all its subCS's frequencies */
if ((sbat = BATdescriptor(*sbatid)) == NULL) {
throw(MAL, "rdf.RDFextractCSwithTypes", RUNTIME_OBJECT_MISSING);
@@ -1796,6 +1798,9 @@ RDFextractCSwithTypes(int *ret, bat *sba
superCSCoverage = (int*) malloc(sizeof(int) * (maxCSoid + 1));
initIntArray(superCSCoverage, maxCSoid + 1, 0);
+ superCSFrequency = (int*) malloc(sizeof(int) * (maxCSoid + 1));
+ initIntArray(superCSFrequency, maxCSoid + 1, 0);
+
generateFreqCSMap(freqCSset,csFreqMap);
@@ -1817,7 +1822,7 @@ RDFextractCSwithTypes(int *ret, bat *sba
//getTopFreqCSs(csMap,*freqThreshold);
- getMaximumFreqCSs(freqCSset, csSuperCSMap, csBats->coverageBat,
superCSCoverage, maxCSoid + 1);
+ getMaximumFreqCSs(freqCSset, csSuperCSMap, csBats->coverageBat,
superCSCoverage, csBats->freqBat, superCSFrequency, maxCSoid + 1);
printFreqCSSet(freqCSset, csSuperCSMap, csBats->freqBat, mbat, 1,
*freqThreshold);
@@ -1831,7 +1836,7 @@ RDFextractCSwithTypes(int *ret, bat *sba
//getStatisticCSsBySize(csMap,maxNumProp);
getStatisticCSsBySupports(csBats->pOffsetBat, csBats->freqBat,
csBats->coverageBat, csBats->fullPBat, csSuperCSMap, 1, *freqThreshold);
- getStatisticMaxCSs(csBats->pOffsetBat, csBats->freqBat,
csBats->fullPBat, csSuperCSMap, superCSCoverage, 1, *freqThreshold);
+ getStatisticMaxCSs(csBats->pOffsetBat, csBats->fullPBat, csSuperCSMap,
superCSCoverage, superCSFrequency, 1, *freqThreshold);
BBPreclaim(sbat);
BBPreclaim(pbat);
@@ -1841,6 +1846,8 @@ RDFextractCSwithTypes(int *ret, bat *sba
free (subjSubCSMap);
free (csFreqMap);
free (csSuperCSMap);
+ free (superCSCoverage);
+ free (superCSFrequency);
freeCS_SubCSMapSet(csSubCSMap, maxCSoid + 1);
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list