Changeset: 608c23981c16 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=608c23981c16 Modified Files: monetdb5/extras/rdf/rdflabels.c monetdb5/extras/rdf/rdfschema.c Branch: rdf Log Message:
fix compile errors when USE_MULTIWAY_MERGING is set to 1, fix mergeCandidates after the order of data types has been changed to (type - onto - fk) diffs (281 lines): diff --git a/monetdb5/extras/rdf/rdflabels.c b/monetdb5/extras/rdf/rdflabels.c --- a/monetdb5/extras/rdf/rdflabels.c +++ b/monetdb5/extras/rdf/rdflabels.c @@ -2016,7 +2016,7 @@ oid* getOntoHierarchy(oid ontology, int* static void removeDuplicatedCandidates(CSlabel *label) { int i, j; - int cNew = label->candidatesNew, cOnto = label->candidatesOntology, cType = label->candidatesType, cFK = label->candidatesFK; + int cNew = label->candidatesNew, cType = label->candidatesType, cOnto = label->candidatesOntology, cFK = label->candidatesFK; if (label->candidatesCount < 2) return; // no duplicates @@ -2028,8 +2028,8 @@ void removeDuplicatedCandidates(CSlabel // find out which category (new, onto, type, fk) we are in int *cPtr = NULL; if (j < label->candidatesNew) cPtr = &cNew; - else if (j < label->candidatesNew + label->candidatesOntology) cPtr = &cOnto; - else if (j < label->candidatesNew + label->candidatesOntology + label->candidatesType) cPtr = &cType; + else if (j < label->candidatesNew + label->candidatesType) cPtr = &cType; + else if (j < label->candidatesNew + label->candidatesType + label->candidatesOntology) cPtr = &cOnto; else cPtr = &cFK; if (label->candidates[i] == label->candidates[j] || label->candidates[j] == BUN_NONE) { @@ -2047,8 +2047,8 @@ void removeDuplicatedCandidates(CSlabel // update counts label->candidatesCount -= moveLeft; label->candidatesNew = cNew; + label->candidatesType = cType; label->candidatesOntology = cOnto; - label->candidatesType = cType; label->candidatesFK = cFK; } @@ -2062,10 +2062,10 @@ void removeDuplicatedCandidates(CSlabel // update value in category; if (label->candidatesNew > 0) { label->candidatesNew--; + } else if (label->candidatesType > 0) { + label->candidatesType--; } else if (label->candidatesOntology > 0) { label->candidatesOntology--; - } else if (label->candidatesType > 0) { - label->candidatesType--; } else { label->candidatesFK--; } @@ -2334,8 +2334,8 @@ CSlabel* initLabels(CSset *freqCSset) { labels[i].candidates = NULL; labels[i].candidatesCount = 0; labels[i].candidatesNew = 0; + labels[i].candidatesType = 0; labels[i].candidatesOntology = 0; - labels[i].candidatesType = 0; labels[i].candidatesFK = 0; labels[i].hierarchy = NULL; labels[i].hierarchyCount = 0; @@ -2790,7 +2790,7 @@ CSlabel* createLabels(CSset* freqCSset, * Result: <common name> <ontology candidates CS1> <ontology candidates CS2> <type candidates CS1> <type candidates CS2> <FK candidates CS1> <FK candidates CS2> */ static -oid* mergeCandidates(int *candidatesCount, int *candidatesNew, int *candidatesOntology, int *candidatesType, int *candidatesFK, CSlabel cs1, CSlabel cs2, oid commonName) { +oid* mergeCandidates(int *candidatesCount, int *candidatesNew, int *candidatesType, int *candidatesOntology, int *candidatesFK, CSlabel cs1, CSlabel cs2, oid commonName) { oid *candidates; int counter = 0; int i; @@ -2812,38 +2812,38 @@ oid* mergeCandidates(int *candidatesCoun } (*candidatesNew) = counter; - // copy "ontology" - for (i = 0; i < cs1.candidatesOntology; ++i) { + // copy "type" + for (i = 0; i < cs1.candidatesType; ++i) { candidates[counter] = cs1.candidates[cs1.candidatesNew + i]; counter++; } - for (i = 0; i < cs2.candidatesOntology; ++i) { + for (i = 0; i < cs2.candidatesType; ++i) { candidates[counter] = cs2.candidates[cs2.candidatesNew + i]; counter++; } - (*candidatesOntology) = counter - (*candidatesNew); - - // copy "type" - for (i = 0; i < cs1.candidatesType; ++i) { - candidates[counter] = cs1.candidates[cs1.candidatesNew + cs1.candidatesOntology + i]; + (*candidatesType) = counter - (*candidatesNew); + + // copy "ontology" + for (i = 0; i < cs1.candidatesOntology; ++i) { + candidates[counter] = cs1.candidates[cs1.candidatesNew + cs1.candidatesType + i]; counter++; } - for (i = 0; i < cs2.candidatesType; ++i) { - candidates[counter] = cs2.candidates[cs2.candidatesNew + cs2.candidatesOntology + i]; + for (i = 0; i < cs2.candidatesOntology; ++i) { + candidates[counter] = cs2.candidates[cs2.candidatesNew + cs2.candidatesType + i]; counter++; } - (*candidatesType) = counter - (*candidatesNew) - (*candidatesOntology); + (*candidatesOntology) = counter - (*candidatesNew) - (*candidatesType); // copy "fk" for (i = 0; i < cs1.candidatesFK; ++i) { - candidates[counter] = cs1.candidates[cs1.candidatesNew + cs1.candidatesOntology + cs1.candidatesType + i]; + candidates[counter] = cs1.candidates[cs1.candidatesNew + cs1.candidatesType + cs1.candidatesOntology + i]; counter++; } for (i = 0; i < cs2.candidatesFK; ++i) { - candidates[counter] = cs2.candidates[cs2.candidatesNew + cs2.candidatesOntology + cs2.candidatesType + i]; + candidates[counter] = cs2.candidates[cs2.candidatesNew + cs2.candidatesType + cs2.candidatesOntology + i]; counter++; } - (*candidatesFK) = counter - (*candidatesNew) - (*candidatesOntology) - (*candidatesType); + (*candidatesFK) = counter - (*candidatesNew) - (*candidatesType) - (*candidatesOntology); return candidates; } @@ -2858,12 +2858,13 @@ str updateLabel(int ruleNumber, CSset *f CSlabel big, small; CSlabel *label; CS cs; - #if USE_MULTIWAY_MERGING +/* #if USE_MULTIWAY_MERGING + // multiway merging cannot be used here, see below int tmpMaxCoverage; int tmpFreqId; - #endif + #endif */ oid *mergedCandidates = NULL; - int candidatesCount, candidatesNew, candidatesOntology, candidatesType, candidatesFK; + int candidatesCount, candidatesNew, candidatesType, candidatesOntology, candidatesFK; (void) lstFreqId; (void) numIds; @@ -2876,8 +2877,8 @@ str updateLabel(int ruleNumber, CSset *f (*labels)[mergeCSFreqId].candidates = NULL; (*labels)[mergeCSFreqId].candidatesCount = 0; (*labels)[mergeCSFreqId].candidatesNew = 0; + (*labels)[mergeCSFreqId].candidatesType = 0; (*labels)[mergeCSFreqId].candidatesOntology = 0; - (*labels)[mergeCSFreqId].candidatesType = 0; (*labels)[mergeCSFreqId].candidatesFK = 0; (*labels)[mergeCSFreqId].hierarchy = NULL; (*labels)[mergeCSFreqId].hierarchyCount = 0; @@ -2910,13 +2911,13 @@ str updateLabel(int ruleNumber, CSset *f #else // candidates - mergedCandidates = mergeCandidates(&candidatesCount, &candidatesNew, &candidatesOntology, &candidatesType, &candidatesFK, (*labels)[freqCS1], (*labels)[freqCS2], label->name); + mergedCandidates = mergeCandidates(&candidatesCount, &candidatesNew, &candidatesType, &candidatesOntology, &candidatesFK, (*labels)[freqCS1], (*labels)[freqCS2], label->name); GDKfree(label->candidates); label->candidates = mergedCandidates; // TODO check access outside function label->candidatesCount = candidatesCount; label->candidatesNew = candidatesNew; + label->candidatesType = candidatesType; label->candidatesOntology = candidatesOntology; - label->candidatesType = candidatesType; label->candidatesFK = candidatesFK; removeDuplicatedCandidates(label); if (label->name == BUN_NONE && label->candidates[0] != BUN_NONE) { @@ -2958,13 +2959,13 @@ str updateLabel(int ruleNumber, CSset *f label->name = name; // candidates - mergedCandidates = mergeCandidates(&candidatesCount, &candidatesNew, &candidatesOntology, &candidatesType, &candidatesFK, (*labels)[freqCS1], (*labels)[freqCS2], label->name); + mergedCandidates = mergeCandidates(&candidatesCount, &candidatesNew, &candidatesType, &candidatesOntology, &candidatesFK, (*labels)[freqCS1], (*labels)[freqCS2], label->name); GDKfree(label->candidates); label->candidates = mergedCandidates; // TODO check access outside function label->candidatesCount = candidatesCount; label->candidatesNew = candidatesNew; + label->candidatesType = candidatesType; label->candidatesOntology = candidatesOntology; - label->candidatesType = candidatesType; label->candidatesFK = candidatesFK; removeDuplicatedCandidates(label); if (label->name == BUN_NONE && label->candidates[0] != BUN_NONE) { @@ -2993,13 +2994,13 @@ str updateLabel(int ruleNumber, CSset *f // subset-superset relation // candidates - mergedCandidates = mergeCandidates(&candidatesCount, &candidatesNew, &candidatesOntology, &candidatesType, &candidatesFK, (*labels)[freqCS1], (*labels)[freqCS2], label->name); // freqCS1 is superCS, freqCS2 is subCS + mergedCandidates = mergeCandidates(&candidatesCount, &candidatesNew, &candidatesType, &candidatesOntology, &candidatesFK, (*labels)[freqCS1], (*labels)[freqCS2], label->name); // freqCS1 is superCS, freqCS2 is subCS GDKfree(label->candidates); label->candidates = mergedCandidates; // TODO check access outside function label->candidatesCount = candidatesCount; label->candidatesNew = candidatesNew; + label->candidatesType = candidatesType; label->candidatesOntology = candidatesOntology; - label->candidatesType = candidatesType; label->candidatesFK = candidatesFK; removeDuplicatedCandidates(label); if (label->name == BUN_NONE && label->candidates[0] != BUN_NONE) { @@ -3013,7 +3014,8 @@ str updateLabel(int ruleNumber, CSset *f case S4: // FALLTHROUGH case S5: - #if USE_MULTIWAY_MERGING +/* #if USE_MULTIWAY_MERGING + // multiwaymerging cannot be used because 'small' is not set, but needed for mergeCandidates() tmpMaxCoverage = 0; tmpFreqId = 0; for (i = 0; i < numIds; i++){ @@ -3022,9 +3024,9 @@ str updateLabel(int ruleNumber, CSset *f tmpMaxCoverage = freqCSset->items[lstFreqId[i]].coverage; } } - big = &(*labels)[tmpFreqId]; - - #else + big = (*labels)[tmpFreqId]; + + #else */ // use label of biggest CS (higher coverage value) if (freqCSset->items[freqCS1].coverage > freqCSset->items[freqCS2].coverage) { big = (*labels)[freqCS1]; @@ -3033,17 +3035,17 @@ str updateLabel(int ruleNumber, CSset *f big = (*labels)[freqCS2]; small = (*labels)[freqCS1]; } - #endif +// #endif label->name = big.name; // candidates - mergedCandidates = mergeCandidates(&candidatesCount, &candidatesNew, &candidatesOntology, &candidatesType, &candidatesFK, big, small, label->name); + mergedCandidates = mergeCandidates(&candidatesCount, &candidatesNew, &candidatesType, &candidatesOntology, &candidatesFK, big, small, label->name); GDKfree(label->candidates); label->candidates = mergedCandidates; // TODO check access outside function label->candidatesCount = candidatesCount; label->candidatesNew = candidatesNew; + label->candidatesType = candidatesType; label->candidatesOntology = candidatesOntology; - label->candidatesType = candidatesType; label->candidatesFK = candidatesFK; removeDuplicatedCandidates(label); if (label->name == BUN_NONE && label->candidates[0] != BUN_NONE) { 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 @@ -3480,12 +3480,13 @@ void doMerge(CSset *freqCSset, int ruleN static str mergeMaxFreqCSByS1(CSset *freqCSset, CSlabel** labels, oid *mergecsId, oid** ontmetadata, int ontmetadataCount,bat *mapbatid){ - int i; + int i, j; + CS *cs1, *cs2; #if !USE_MULTIWAY_MERGING - int j, k; + int k; int freqId1, freqId2; - CS *cs1, *cs2; + int tmpCount; #else int *lstDistinctFreqId = NULL; int numDistinct = 0; @@ -3494,7 +3495,6 @@ str mergeMaxFreqCSByS1(CSset *freqCSset, #endif LabelStat *labelStat = NULL; oid *name; - int tmpCount; #if OUTPUT_FREQID_PER_LABEL FILE *fout; @@ -3715,6 +3715,7 @@ void mergeMaxFreqCSByS5(CSrel *csrelMerg #if !USE_MULTIWAY_MERGING int freqId1, freqId2; CS *cs1, *cs2; + int startIdx = 0; #else int *lstDistinctFreqId = NULL; int numDistinct = 0; @@ -3729,7 +3730,6 @@ void mergeMaxFreqCSByS5(CSrel *csrelMerg #endif int maxNumPropInMergeCS =0; //int numCombinedP = 0; - int startIdx = 0; printf("Start merging CS by using S5[From FK] \n"); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list