Changeset: 33bbe519a47b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=33bbe519a47b
Modified Files:
        monetdb5/extras/rdf/rdfalgebra.c
        monetdb5/extras/rdf/rdfschema.c
        monetdb5/modules/mal/tokenizer.c
        sql/backends/monet5/sql.h
        sql/backends/monet5/sql_rdf.c
        sql/backends/monet5/sql_rdf.mal
        sql/scripts/30_rdf.sql
Branch: rdf
Log Message:

Add function for converting str to encoded id in RDF.

Also fix a bug causing by using BUNtloc for type_void tail.


diffs (151 lines):

diff --git a/monetdb5/extras/rdf/rdfalgebra.c b/monetdb5/extras/rdf/rdfalgebra.c
--- a/monetdb5/extras/rdf/rdfalgebra.c
+++ b/monetdb5/extras/rdf/rdfalgebra.c
@@ -148,7 +148,7 @@ RDFpartialjoin(bat *retid, bat *lid, bat
        BATloop(result, p, q){
                rbt = (oid *) BUNtloc(resulti, p); 
                if (*rbt == oid_nil){
-                       ibt = (oid *) BUNtloc(inputi, p); 
+                       ibt = (oid *) BUNtail(inputi, p); 
                        *rbt = *ibt; 
                }
        }
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
@@ -11265,7 +11265,7 @@ str buildTKNZRMappingBat(BAT *lmap, BAT 
        
        TKNZRgetTotalCount(&num);
        //create a tmpBat from 0 to number of TKNZR items
-       tmpBat = BATnew(TYPE_void, TYPE_oid , num + 1, TRANSIENT);
+       tmpBat = BATnew(TYPE_void, TYPE_void , num + 1, TRANSIENT);
        BATsetcount(tmpBat,num);
        BATseqbase(tmpBat, 0);
        BATseqbase(BATmirror(tmpBat), 0);
@@ -11276,7 +11276,6 @@ str buildTKNZRMappingBat(BAT *lmap, BAT 
        tmpBat->trevsorted = 0;
        tmpBat->tdense = 1;
 
-
        if (RDFpartialjoin(&mapBatId, &lmap->batCacheid, &rmap->batCacheid, 
&tmpBat->batCacheid) != MAL_SUCCEED){
                throw(RDF, "rdf.RDFreorganize", "Problem in using 
RDFpartialjoin for tokenizer map bat");
        }
@@ -11286,7 +11285,7 @@ str buildTKNZRMappingBat(BAT *lmap, BAT 
        }
 
        pMapBat = BATcopy(tmpmapBat, tmpmapBat->htype, tmpmapBat->ttype, TRUE, 
PERSISTENT);
-       
+
        if (BKCsetName(&ret, (int *) &(pMapBat->batCacheid), (str *) &bname) != 
MAL_SUCCEED)
                throw(MAL, "tokenizer.open", OPERATION_FAILED);
        
diff --git a/monetdb5/modules/mal/tokenizer.c b/monetdb5/modules/mal/tokenizer.c
--- a/monetdb5/modules/mal/tokenizer.c
+++ b/monetdb5/modules/mal/tokenizer.c
@@ -463,9 +463,10 @@ TKNZRlocate(Client cntxt, MalBlkPtr mb, 
        oid id; 
        (void) cntxt;
        (void) mb;
-
-       if (TRANS == NULL)
+       
+       if (TRANS == NULL){
                throw(MAL, "tokenizer", "no tokenizer store open");
+       }
 
        ret = TKNRstringToOid(&id, (str *) getArgReference(stk, pci, 1));
        if (ret == MAL_SUCCEED) {
diff --git a/sql/backends/monet5/sql.h b/sql/backends/monet5/sql.h
--- a/sql/backends/monet5/sql.h
+++ b/sql/backends/monet5/sql.h
@@ -149,6 +149,7 @@ sql5_export str SQLrdfreorganize(Client 
 sql5_export str SQLrdfRetrieveSubschema(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
 sql5_export str SQLrdfScan(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 sql5_export str SQLrdfidtostr(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+sql5_export str SQLrdfstrtoid(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str SQLoptimizersUpdate(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str month_interval_str(int *ret, str *s, int *ek, int *sk);
 sql5_export str second_interval_str(lng *res, str *s, int *ek, int *sk);
diff --git a/sql/backends/monet5/sql_rdf.c b/sql/backends/monet5/sql_rdf.c
--- a/sql/backends/monet5/sql_rdf.c
+++ b/sql/backends/monet5/sql_rdf.c
@@ -1167,6 +1167,57 @@ SQLrdfidtostr(Client cntxt, MalBlkPtr mb
        return msg; 
 }
 
+
+str
+SQLrdfstrtoid(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci){
+       str msg; 
+       mvc *m = NULL; 
+       BAT *mapBat = NULL; 
+       bat mapBatId;
+       str bnameBat = "tknzr_to_map";
+       oid *origId = NULL; 
+       oid *id = NULL; 
+       str *s = (str *)getArgReference(stk,pci,1);
+
+       printf("Get the encoded id for the string %s\n", *s); 
+
+       rethrow("sql.rdfstrtoid", msg, getSQLContext(cntxt, mb, &m, NULL));
+
+       printf("Get the context done\n"); 
+
+       mapBatId = BBPindex(bnameBat);
+
+       if ((mapBat= BATdescriptor(mapBatId)) == NULL) {
+               throw(MAL, "SQLrdfstrtoid", RUNTIME_OBJECT_MISSING);
+       }
+       
+       VALset(getArgReference(stk, pci, 1), TYPE_str, *s);
+
+       rethrow("sql.rdfstrtoid", msg, TKNZRlocate(cntxt,mb,stk,pci));
+
+       if (msg != MAL_SUCCEED){
+               return sql_message("Problem in locating string: %s\n", msg);    
        
+       }
+
+       origId = (oid *) getArgReference(stk, pci, 0);
+       
+       if (*origId == oid_nil){
+               return sql_message("This string is not stored");
+       } else
+               printf("origId = "BUNFMT"\n", *origId); 
+
+
+       id = (oid *) Tloc(mapBat, *origId); 
+
+       printf("id = "BUNFMT"\n", *id); 
+
+       if (id != NULL){
+               return sql_message("ID: "BUNFMT"\n", *id); 
+       }
+       
+       return msg; 
+}
+
 str 
 SQLrdfScan(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci){
        str msg; 
diff --git a/sql/backends/monet5/sql_rdf.mal b/sql/backends/monet5/sql_rdf.mal
--- a/sql/backends/monet5/sql_rdf.mal
+++ b/sql/backends/monet5/sql_rdf.mal
@@ -41,3 +41,7 @@ comment "RDF scan operator"
 pattern rdfidtostr(id:oid)
 address        SQLrdfidtostr
 comment "Convert from oid to string"
+
+pattern rdfstrtoid(urlstr:str)
+address        SQLrdfstrtoid
+comment "Convert from string to encoded id"
diff --git a/sql/scripts/30_rdf.sql b/sql/scripts/30_rdf.sql
--- a/sql/scripts/30_rdf.sql
+++ b/sql/scripts/30_rdf.sql
@@ -49,3 +49,7 @@ create procedure rdf_scan(query string, 
 
 create procedure rdf_idtostr(id oid)
        external name sql.rdfidtostr;
+       
+create procedure rdf_strtoid(urlstr string)
+       external name sql.rdfstrtoid;
+       
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to