/****************************************************************/
#include <stdio.h>
+#include <postgresql/libpq-fe.h>
#include <malloc.h>
/****************************************************************/
/* the identifier is not in the first position */
{
prev->next_st_bucket = curr->next_st_bucket;
- move_bucket(curr,
- dict_index);
+ move_bucket(curr,dict_index);
};
return where;
}
}
-print_all(about,outrel,outsort)
+print_all(about,conn)
char *about;
- FILE *outrel,
- *outsort;
+ PGconn *conn;
{
int i;
if ((curr->pos[i]) == 1)
{
if (i == MAINHYP)
- print_mainhyp(about,outrel,outsort,curr->id,curr->depths);
+ print_mainhyp(about,conn,curr->id,curr->depths);
else if (i == MAINCONCL)
- print_mainconcl(about,outrel,outsort,curr->id,curr->main_depth);
+ print_mainconcl(about,conn,curr->id,curr->main_depth);
else
- print_one(curr->id,i);
+ print_one(conn,about,curr->id,i);
}
curr = curr->all_next;
}
/* 5. Definitions of functions local to the module. */
/****************************************************************/
+void exit_nicely(PGconn *conn)
+{
+ PQfinish(conn);
+ exit(1);
+}
+
struct int_list *add(l,m)
struct int_list *l;
int m;
}
-print_mainhyp(about,outrel,outsort,uri,l)
+print_mainhyp(about,conn,uri,l)
char *about;
- FILE *outrel,
- *outsort;
+ PGconn *conn;
char *uri;
struct int_list *l;
{
+ PGresult *res;
+ char *command = (char *)malloc((sizeof('a')*200));
struct int_list *curr;
curr = l;
if (!strcmp(uri,"Rel"))
{
- fprintf(outrel,"\t<h:Object rdf:about=\"");
- fprintf(outrel,"%s",about);
- fprintf(outrel,"\">\n");
/* scan the list */
while (curr != NULL)
{
- fprintf(outrel,"\t\t<h:refRel rdf:parseType=\"Resource\">");
- fprintf(outrel,"\n\t\t\t\t<h:position rdf:resource=\"&hns;MainHypothesis\"/>");
- fprintf(outrel,"\n\t\t\t\t<h:depth>%d</h:depth>",curr->val);
- fprintf(outrel,"\n\t\t</h:refRel>\n");
+ size_t len = strlen(about) + 1;
+ char *qabout = malloc (sizeof(char) * len * 2);
+ PQescapeString(qabout,about,len);
+ sprintf(command,"INSERT INTO refRel values ('%s', 'http://www.cs.unibo.it/helm/schemas/schema-helm#MainHypothesis', %d)",qabout,curr->val);
+ /* fprintf(stderr, "%s\n", command); */
+ res = PQexec(conn, command);
+ if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
+ {
+ fprintf(stderr, "BEGIN command failed\n");
+ PQclear(res);
+ exit_nicely(conn);
+ }
curr = curr->next;
}
- fprintf(outrel,"\t</h:Object>\n");
}
else if ((!strcmp(uri,"Prop")) || (!strcmp(uri,"Type")) ||
(!strcmp(uri,"Set")))
{
/* scan the list */
- fprintf(outsort,"\t<h:Object rdf:about=\"");
- fprintf(outsort,"%s",about);
- fprintf(outsort,"\">\n");
while (curr != NULL)
{
- fprintf(outsort,"\t\t<h:refSort rdf:parseType=\"Resource\">");
- fprintf(outsort,"\n\t\t\t\t<h:position rdf:resource=\"&hns;MainHypothesis\"/>");
- fprintf(outsort,"\n\t\t\t\t<h:sort rdf:resource=\"&hns;%s\"/>",uri);
- fprintf(outsort,"\n\t\t\t\t<h:depth>%d</h:depth>",curr->val);
- fprintf(outsort,"\n\t\t</h:refSort>\n");
+ size_t len = strlen(about) + 1;
+ char *qabout = malloc (sizeof(char) * len * 2);
+ PQescapeString(qabout,about,len);
+ sprintf(command,"INSERT INTO refSort values ('%s', 'http://www.cs.unibo.it/helm/schemas/schema-helm#MainHypothesis', %d, '%s')",qabout,curr->val,uri);
+ /* fprintf(stderr, "%s\n", command); */
+ res = PQexec(conn, command);
+ if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
+ {
+ fprintf(stderr, "BEGIN command failed\n");
+ PQclear(res);
+ exit_nicely(conn);
+ }
curr = curr->next;
}
- fprintf(outsort,"\t</h:Object>\n");
}
else
{
/* scan the list */
while (curr != NULL)
{
- printf("\t\t<h:refObj rdf:parseType=\"Resource\">");
- printf("\n\t\t\t\t<h:position rdf:resource=\"&hns;MainHypothesis\"/>");
- printf("\n\t\t\t\t<h:depth>%d</h:depth>",curr->val);
- printf("\n\t\t\t\t<h:occurrence><h:Object rdf:about=\"%s\"/></h:occurrence>",uri);
- printf("\n\t\t</h:refObj>\n");
+ size_t len = strlen(about) + 1;
+ char *qabout = malloc (sizeof(char) * len * 2);
+ char *quri;
+ PQescapeString(qabout,about,len);
+ len = strlen(uri) + 1;
+ quri = malloc (sizeof(char) * len * 2);
+ PQescapeString(quri,uri,len);
+ sprintf(command,"INSERT INTO refObj values ('%s', '%s', 'http://www.cs.unibo.it/helm/schemas/schema-helm#MainHypothesis', %d)",qabout,quri,curr->val);
+ /* fprintf(stderr, "%s\n", command); */
+ res = PQexec(conn, command);
+ if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
+ {
+ fprintf(stderr, "BEGIN command failed\n");
+ PQclear(res);
+ exit_nicely(conn);
+ }
curr = curr->next;
}
}
}
-print_mainconcl(about,outrel,outsort,uri,depth)
+print_mainconcl(about,conn,uri,depth)
char *about;
- FILE *outrel,
- *outsort;
+ PGconn *conn;
char *uri;
int depth;
{
+ PGresult *res;
+ char *command = (char *)malloc((sizeof('a')*200));
+ /* fprintf(stderr,"about = %s\n",about); */
if (!strcmp(uri,"Rel"))
{
- fprintf(outrel,"\t<h:Object rdf:about=\"");
- fprintf(outrel,"%s",about);
- fprintf(outrel,"\">\n");
- fprintf(outrel,"\t\t<h:refRel rdf:parseType=\"Resource\">");
- fprintf(outrel,"\n\t\t\t\t<h:position rdf:resource=\"&hns;MainConclusion\"/>");
- fprintf(outrel,"\n\t\t\t\t<h:depth>%d</h:depth>",depth);
- fprintf(outrel,"\n\t\t</h:refRel>\n");
- fprintf(outrel,"\t</h:Object>\n");
+ size_t len = strlen(about) + 1;
+ char *qabout = malloc (sizeof(char) * len * 2);
+ PQescapeString(qabout,about,len);
+ sprintf(command,"INSERT INTO refRel values ('%s', 'http://www.cs.unibo.it/helm/schemas/schema-helm#MainConclusion', %d)",qabout,depth);
+ /* fprintf(stderr, "%s\n", command); */
+ res = PQexec(conn, command);
}
else if ((!strcmp(uri,"Prop")) || (!strcmp(uri,"Type")) ||
(!strcmp(uri,"Set")))
{
- fprintf(outsort,"\t<h:Object rdf:about=\"");
- fprintf(outsort,"%s",about);
- fprintf(outsort,"\">\n");
- fprintf(outsort,"\t\t<h:refSort rdf:parseType=\"Resource\">");
- fprintf(outsort,"\n\t\t\t\t<h:position rdf:resource=\"&hns;MainConclusion\"/>");
- fprintf(outsort,"\n\t\t\t\t<h:sort rdf:resource=\"&hns;%s\"/>",uri);
- fprintf(outsort,"\n\t\t\t\t<h:depth>%d</h:depth>",depth);
- fprintf(outsort,"\n\t\t</h:refSort>\n");
- fprintf(outsort,"\t</h:Object>\n");
+ size_t len = strlen(about) + 1;
+ char *qabout = malloc (sizeof(char) * len * 2);
+ PQescapeString(qabout,about,len);
+ sprintf(command,"INSERT INTO refSort values ('%s', 'http://www.cs.unibo.it/helm/schemas/schema-helm#MainConclusion', %d, '%s')",qabout,depth,uri);
+ /* fprintf(stderr, "%s\n", command); */
+ res = PQexec(conn, command);
}
else
{
- printf("\t\t<h:refObj rdf:parseType=\"Resource\">");
- printf("\n\t\t\t\t<h:position rdf:resource=\"&hns;MainConclusion\"/>");
- printf("\n\t\t\t\t<h:depth>%d</h:depth>",depth);
- printf("\n\t\t\t\t<h:occurrence><h:Object rdf:about=\"%s\"/></h:occurrence>",uri);
- printf("\n\t\t</h:refObj>\n");
+ size_t len = strlen(about) + 1;
+ char *qabout = malloc (sizeof(char) * len * 2);
+ char *quri;
+ PQescapeString(qabout,about,len);
+ len = strlen(uri) + 1;
+ quri = malloc (sizeof(char) * len * 2);
+ PQescapeString(quri,uri,len);
+ sprintf(command,"INSERT INTO refObj values ('%s', '%s','http://www.cs.unibo.it/helm/schemas/schema-helm#MainConclusion', %d)",qabout,quri,depth);
+ /* fprintf(stderr, "%s\n", command); */
+ res = PQexec(conn, command);
+ }
+ if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
+ {
+ fprintf(stderr, "BEGIN command failed\n");
+ PQclear(res);
+ exit_nicely(conn);
}
+ /* fprintf(stderr,"FINITO\n"); */
}
// dome: cambiata per usare il modello con position
-print_one(uri,pos)
- char *uri;
+print_one(conn,about,uri,pos)
+ PGconn *conn;
+ char *about,
+ *uri;
int pos;
{
- printf("\t\t<h:refObj rdf:parseType=\"Resource\">");
- printf("\n\t\t\t\t<h:position rdf:resource=\"&hns;");
+ PGresult *res;
+ char *command = (char *)malloc((sizeof('a')*200));
+ char *position = (char *)malloc((sizeof('a')*20));
+ size_t len = strlen(about) + 1;
+ char *qabout = malloc (sizeof(char) * len * 2);
+ char *quri;
+ PQescapeString(qabout,about,len);
+ len = strlen(uri) + 1;
+ quri = malloc (sizeof(char) * len * 2);
+ PQescapeString(quri,uri,len);
if (pos == INBODY)
- printf("InBody");
+ position="InBody";
else if (pos == MAINHYP)
- printf("MainHypothesis");
+ position="MainHypothesis"; /* This should never happen */
else if (pos == INHYP)
- printf("InHypothesis");
+ position="InHypothesis";
else if (pos == INCONCL)
- printf("InConclusion");
+ position="InConclusion";
else if (pos == MAINCONCL)
- printf("MainConclusion");
- printf("\"/>\n\t\t\t\t<h:occurrence><h:Object rdf:about=\"%s\"/></h:occurrence>\n\t\t</h:refObj>\n", uri);
+ position="MainConclusion"; /* This should never happen */
+ sprintf(command,"INSERT INTO refObj values ('%s', '%s', 'http://www.cs.unibo.it/helm/schemas/schema-helm#%s')",qabout,quri,position);
+ /* fprintf(stderr, "%s\n", command); */
+ res = PQexec(conn, command);
+ if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
+ {
+ fprintf(stderr, "BEGIN command failed\n");
+ PQclear(res);
+ exit_nicely(conn);
+ }
}
/* The following function allocates a bucket for an identifier. */