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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list