+sub isRdfUri { # return true if the uri is an rdf uri, false otherwise
+# typycal rdf uri:
+# helm:rdf/cic:www.cs.unibo.it/helm/rdf/foo_schema//cic:\
+# /Coq/Init/Logic/True_rec.con.types
+#
+# the format is "helm:rdf/<metadata_tree>:<metadata_scheme>//<xml_file_uri>"
+#
+ my ($uri) = @_;
+ if ($uri =~ /^helm:rdf(.*):(.*)\/\/(.*)/) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+sub resolve { # resolve an uri in a url, work both with standard cic: or theory:
+ # uris and rdf uris
+ print "RESOLVE subroutine\n";
+ my ($uri) = @_;
+ print "GIVEN URI: \"$uri\"\n";
+ if (isRdfUri ($uri)) { # rdf uri, resolve using rdf db
+ print "IS A RDF URI\n";
+ print "I WILL RETURN '$rdf_map{$uri}'\n";
+ return ($rdf_map{$uri});
+ } else { # standard cic: or theory: uri, resolve using std uri db
+ print "IS NOT A RDF URI\n";
+ print "I WILL RETURN '$xml_map{$uri}'\n";
+ return ($xml_map{$uri});
+ }
+}
+
+sub getalluris { # get all the keys whose prefix is cic
+ my $content = "";
+ my ($uri);
+ my $debug=1; # for debug
+
+ $content .= '<?xml version="1.0" encoding="ISO-8859-1"?>' . "\n";
+ $content .= "<!DOCTYPE alluris SYSTEM ";
+ $content .= "\"$myownurl/getdtd?uri=alluris.dtd\">" . "\n\n";
+ $content .= "<alluris>\n";
+ foreach $uri (sort (keys(%xml_map))) { # select matching uris
+ if ($uri =~ /^cic:/ && not $uri =~ /.types$/) {
+ print "GETALLURI: $uri\n" if defined($debug);
+ $content .= "\t<uri value=\"$uri\"/>\n";
+ }
+ }
+ $content .= "</alluris>\n";
+ return $content;
+}
+
+sub getallrdfuris {
+ my $content = "";
+ my ($uri);
+ my $debug=1; # for debug
+
+ $content .= '<?xml version="1.0" encoding="ISO-8859-1"?>' . "\n";
+ $content .= "<!DOCTYPE allrdfuris SYSTEM ";
+ $content .= "\"$myownurl/getdtd?uri=alluris.dtd\">" . "\n\n";
+ $content .= "<allrdfuris>\n";
+ foreach $uri (sort (keys(%rdf_map))) {
+ print "GETALLRDFURI: $uri\n" if defined($debug);
+ $content .= "\t<uri value=\"$uri\"/>\n";
+ }
+ $content .= "</allrdfuris>\n";
+ return $content;
+}
+