Changeset: e2b91a378a43 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e2b91a378a43
Modified Files:
monetdb5/extras/rdf/rdfschema.c
Branch: rdf
Log Message:
Map the CS id directly to the index of maxCS or mergeCS in the set of frequent
CSs
diffs (61 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
@@ -2944,7 +2944,6 @@ RDFreorganize(int *ret, bat *sbatid, bat
CSset *freqCSset; /* Set of frequent CSs */
oid *subjCSMap = NULL; /* Store the corresponding CS
Id for each subject */
- oid *csFreqCSMap;
int i;
oid maxCSoid = 0;
BAT *sbat = NULL, *obat = NULL, *pbat = NULL;
@@ -2958,7 +2957,8 @@ RDFreorganize(int *ret, bat *sbatid, bat
oid lastS;
oid l,r;
bat oNewBatid, pNewBatid;
-
+ oid *csMFreqCSMap; /* Store the mapping from a CS id to an
index of a maxCS or mergeCS in freqCSset. */
+
freqCSset = initCSset();
if (RDFextractCSwithTypes(ret, sbatid, pbatid, obatid, mapbatid,
freqThreshold, freqCSset,&subjCSMap, &maxCSoid) != MAL_SUCCEED){
@@ -2966,13 +2966,18 @@ RDFreorganize(int *ret, bat *sbatid, bat
}
printf("Start re-organizing triple store for " BUNFMT " CSs \n",
maxCSoid);
- csFreqCSMap = (oid *) malloc (sizeof (oid) * (maxCSoid + 1));
- initArray(csFreqCSMap, (maxCSoid + 1), BUN_NONE);
+ csMFreqCSMap = (oid *) malloc (sizeof (oid) * (maxCSoid + 1));
+ initArray(csMFreqCSMap, (maxCSoid + 1), BUN_NONE);
lastSubjId = (oid *) malloc (sizeof(oid) * freqCSset->numOrigFreqCS);
for (i = 0; i < freqCSset->numOrigFreqCS; i++){
- csFreqCSMap[freqCSset->items[i].csId] = i;
+ if (freqCSset->items[i].parentFreqIdx != -1){ // Use the
maximum or merge CS instead
+ csMFreqCSMap[freqCSset->items[i].csId] =
freqCSset->items[i].parentFreqIdx;
+ }
+ else
+ csMFreqCSMap[freqCSset->items[i].csId] = i;
+
lastSubjId[i] = 0;
}
@@ -3019,7 +3024,7 @@ RDFreorganize(int *ret, bat *sbatid, bat
lastS = -1;
BATloop(sbat, p, q){
sbt = (oid *) BUNtloc(si, p);
- freqId = csFreqCSMap[subjCSMap[*sbt]];
+ freqId = csMFreqCSMap[subjCSMap[*sbt]];
if (freqId != BUN_NONE){
@@ -3086,7 +3091,7 @@ RDFreorganize(int *ret, bat *sbatid, bat
freeCSset(freqCSset);
free(subjCSMap);
- free(csFreqCSMap);
+ free(csMFreqCSMap);
BBPreclaim(lmap);
BBPreclaim(rmap);
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list