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