Changeset: ea6d31745ec7 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ea6d31745ec7
Modified Files:
        monetdb5/extras/rdf/rdfschema.c
        monetdb5/extras/rdf/rdfschema.h
        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 procedure returning the literal value for an oid in RDF tables.

call rdf_idtostr(id: oid)


diffs (130 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
@@ -11303,6 +11303,10 @@ str buildTKNZRMappingBat(BAT *lmap, BAT 
        plmapBat = BATcopy(tmplmapBat, tmplmapBat->htype, tmplmapBat->ttype, 
TRUE, PERSISTENT);
        prmapBat = BATcopy(tmprmapBat, tmprmapBat->htype, tmprmapBat->ttype, 
TRUE, PERSISTENT);
 
+       plmapBat->tkey = 1; 
+       plmapBat->tsorted = 1; 
+
+
        if (BKCsetName(&ret, (int *) &(plmapBat->batCacheid), (str *) 
&bnamelBat) != MAL_SUCCEED)
                throw(MAL, "tokenizer.open", OPERATION_FAILED);
        
diff --git a/monetdb5/extras/rdf/rdfschema.h b/monetdb5/extras/rdf/rdfschema.h
--- a/monetdb5/extras/rdf/rdfschema.h
+++ b/monetdb5/extras/rdf/rdfschema.h
@@ -540,6 +540,4 @@ printTKNZStringFromOid(oid id);
 rdf_export BAT*
 createEncodedSubjBat(int tblIdx, int num);
 
-
-
 #endif /* _RDFSCHEMA_H_ */
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
@@ -148,6 +148,7 @@ sql5_export str SQLrdfShred(Client cntxt
 sql5_export str SQLrdfreorganize(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 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 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
@@ -1052,6 +1052,57 @@ SQLrdfreorganize(Client cntxt, MalBlkPtr
 #endif /* HAVE_RAPTOR */       
 }
 
+str
+SQLrdfidtostr(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci){
+       str msg; 
+       mvc *m = NULL; 
+       BAT *lmapBat = NULL, *rmapBat = NULL; 
+       bat lmapBatId, rmapBatId;
+       str bnamelBat = "map_to_tknz_left";
+       str bnamerBat = "map_to_tknz_right";
+       BUN pos; 
+       oid *origId; 
+       oid *id = (oid *)getArgReference(stk,pci,1);
+       str *s; 
+
+       rethrow("sql.rdfidtostr", msg, getSQLContext(cntxt, mb, &m, NULL));
+       
+       lmapBatId = BBPindex(bnamelBat);
+       rmapBatId = BBPindex(bnamerBat);
+
+       if (lmapBatId == 0 || rmapBatId == 0){
+               throw(SQL, "sql.SQLrdfidtostr", "The lmap/rmap Bats should be 
built already");
+       }
+       
+       if ((lmapBat= BATdescriptor(lmapBatId)) == NULL) {
+               throw(MAL, "rdf.RDFreorganize", RUNTIME_OBJECT_MISSING);
+       }
+
+       if ((rmapBat= BATdescriptor(rmapBatId)) == NULL) {
+               throw(MAL, "rdf.RDFreorganize", RUNTIME_OBJECT_MISSING);
+       }
+
+       pos = BUNfnd(BATmirror(lmapBat),id);
+       if (pos == BUN_NONE)    //this id is not converted to a new id
+               origId = id; 
+       else
+               origId = (oid *) Tloc(rmapBat, pos);
+       
+       VALset(getArgReference(stk, pci, 1), TYPE_oid, origId);
+
+       /*First convert the id to the original tokenizer odi */
+       rethrow("sql.rdfidtostr", msg, TKNZRtakeOid(cntxt,mb,stk,pci));
+       
+       s = (str *) getArgReference(stk, pci, 0);
+       
+       if (msg == MAL_SUCCEED){
+               //throw(SQL, "sql.rdfidtostr", "String for "BUNFMT" is 
%s\n",*id, *s);
+               return sql_message("Literal value: %s\n", *s); 
+       }
+       
+       return msg; 
+}
+
 str 
 SQLrdfScan(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci){
        str msg; 
@@ -1061,10 +1112,10 @@ SQLrdfScan(Client cntxt, MalBlkPtr mb, M
        str *params = (str *)getArgReference(stk,pci,1);        
        str *schema = (str *)getArgReference(stk,pci,2);        
 
-       rethrow("sql.rdfShred", msg, getSQLContext(cntxt, mb, &m, NULL));
+       rethrow("sql.rdfScan", msg, getSQLContext(cntxt, mb, &m, NULL));
 
        rethrow("sql.rdfScan", msg, RDFscan(*params, *schema));
-       
+
        (void) ret; 
 
        return MAL_SUCCEED; 
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
@@ -37,3 +37,7 @@ The views link to the base schema. Wrapp
 pattern rdfscan(query:str, schema:str)
 address SQLrdfScan
 comment "RDF scan operator"
+
+pattern rdfidtostr(id:oid)
+address        SQLrdfidtostr
+comment "Convert from oid to string"
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
@@ -46,3 +46,6 @@ create procedure rdf_reorganize(sch stri
 
 create procedure rdf_scan(query string, sch string)    
        external name sql.rdfscan;
+
+create procedure rdf_idtostr(id oid)
+       external name sql.rdfidtostr;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to