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

Reply via email to