Retrieves feature type information about a configured feature type.
This information is needed to indicate the amount of features and common properties associated with those features.
417 System.out.println(
"Getting FeatureType Information for "+featuretype+
"...");
418 if(
featureTypes.containsKey(featuretype.toLowerCase())) {
421 String indvar=
"item";
422 if(workingobj.has(
"indvar")) {
423 indvar=workingobj.getString(
"indvar");
425 Map<String,String> result=
new TreeMap<>();
426 Map<String,String> nscache=
new TreeMap<>();
431 if(queryString.contains(
"?rel") && queryString.contains(
"?val")) {
436 System.out.println(
"Starting query execution... "+queryurl);
437 QueryExecution qexec = QueryExecutionFactory.sparqlService(queryurl, query);
438 qexec.setTimeout(1, TimeUnit.MINUTES);
439 ResultSet results = qexec.execSelect();
440 System.out.println(
"Hello");
441 if(!results.hasNext()) {
442 System.out.println(
"No results!?!");
446 System.out.println(
"Executed query... getting results");
447 QuerySolution solu=results.next();
448 Iterator<String> varnames=solu.varNames();
449 System.out.println(solu.get(indvar));
450 if(solu.get(indvar)!=
null) {
451 result=
new TreeMap<>();
452 queryString=queryString.replace(
"WHERE{",
"WHERE{ BIND( <"+solu.get(indvar)+
"> AS ?"+indvar+
") ");
456 qexec = QueryExecutionFactory.sparqlService(queryurl, query);
457 results = qexec.execSelect();
459 Map<String,String> rel =
new TreeMap<String,String>();
460 Map<String,String> val=
new TreeMap<String,String>();
461 String lat=
"",lon=
"",lastInd=
"";
462 List<String> latlist=
new LinkedList<String>();
463 List<String> lonlist=
new LinkedList<String>();
464 Integer attcount=0,nscounter=0;
465 result.put(
"namespaces",
"");
466 while(results.hasNext()) {
468 varnames=solu.varNames();
469 if(lastInd.isEmpty()) {
470 if(!latlist.isEmpty() && !lonlist.isEmpty()) {
471 if(latlist.size()==1 && lonlist.size()==1) {
472 result.put(
"http://www.opengis.net/ont/geosparql#asWKT",
"Point("+lonlist.get(0)+
" "+latlist.get(0)+
")");
473 }
else if(latlist.get(latlist.size()-1).equals(latlist.get(0)) && lonlist.get(lonlist.size()-1).equals(lonlist.get(0))) {
474 StringBuilder builder=
new StringBuilder();
475 for(
int i=0;i<latlist.size();i++) {
476 builder.append(lonlist.get(i)+
" "+latlist.get(i)+
",");
478 builder.delete(builder.length()-1,builder.length());
479 result.put(
"http://www.opengis.net/ont/geosparql#asWKT",
"Polygon(("+builder.toString()+
"))");
480 }
else if(!latlist.get(latlist.size()-1).equals(latlist.get(0)) || !lonlist.get(lonlist.size()-1).equals(lonlist.get(0))) {
481 StringBuilder builder=
new StringBuilder();
482 for(
int i=0;i<latlist.size();i++) {
483 builder.append(lonlist.get(i)+
" "+latlist.get(i)+
",");
485 builder.delete(builder.length()-1,builder.length());
486 result.put(
"http://www.opengis.net/ont/geosparql#asWKT",
"LineString(("+builder.toString()+
"))");
491 }
else if(!lastInd.equals(solu.get(indvar).toString())) {
494 while(varnames.hasNext()) {
495 String varname=varnames.next();
496 if(varname.endsWith(
"_rel") || varname.equals(
"rel") || varname.matches(
"rel[0-9]+$")) {
497 rel.put(varname,solu.get(varname).toString());
498 }
else if(varname.endsWith(
"_val") || varname.equals(
"val") || varname.matches(
"val[0-9]+$")){
499 val.put(varname,solu.get(varname).toString());
500 }
else if(varname.equals(
"lat")) {
501 lat=solu.get(varname).toString();
502 }
else if(varname.equals(
"lon")){
503 lon=solu.get(varname).toString();
504 }
else if(varname.contains(
"_geom")){
505 if(!nscache.containsKey(
"http://www.opengis.net/ont/geosparql#"))
506 nscache.put(
"http://www.opengis.net/ont/geosparql#",
"ns"+nscounter++);
507 result.put(
"http://www.opengis.net/ont/geosparql#asWKT",solu.getLiteral(varname).toString());
511 String varval=solu.get(varname).toString();
512 if(varval.contains(
"http") && varval.contains(
"#")) {
513 ns=varval.substring(0,varval.lastIndexOf(
'#')+1);
514 }
else if(varval.contains(
"http") && varval.contains(
"/")) {
515 ns=varval.substring(0,varval.lastIndexOf(
'/')+1);
517 if(ns!=
null && !ns.isEmpty() && !nscache.containsKey(ns)) {
518 nscache.put(ns,
"ns"+nscounter++);
521 String lit=solu.get(varname).toString();
522 result.put(varname, lit);
523 }
catch(Exception e) {
525 result.put(varname, varval);
530 if(!lat.isEmpty() && !lon.isEmpty()) {
532 if(lat.contains(
"^^")) {
533 ns=lat.substring(lat.lastIndexOf(
"^^")+2);
534 }
else if(lat.contains(
"http") && lat.contains(
"#")) {
535 ns=lat.substring(0,lat.lastIndexOf(
'#')+1);
536 }
else if(lat.contains(
"http") && lat.contains(
"/")) {
537 ns=lat.substring(0,lat.lastIndexOf(
'/')+1);
539 if(ns!=
null && !ns.isEmpty() && !nscache.containsKey(ns)) {
540 nscache.put(ns,
"ns"+nscounter++);
542 if(lat.contains(
"^^") && lon.contains(
"^^")) {
543 latlist.add(lat.substring(0,lat.indexOf(
"^^")));
544 lonlist.add(lon.substring(0,lon.indexOf(
"^^")));
549 if(!rel.isEmpty() && !val.isEmpty()) {
552 String attname=
"",vall=
"",rell=
"";
553 Iterator<String> valit=val.values().iterator();
554 while(valit.hasNext()) {
557 for(String rl:rel.values()) {
558 if(rl.contains(
"http") && rl.contains(
"#")) {
559 ns=rl.substring(0,rl.lastIndexOf(
'#')+1);
560 attname+=rl.substring(rl.lastIndexOf(
'#')+1);
561 }
else if(rl.contains(
"http") && rl.contains(
"/")) {
562 ns=rl.substring(0,rl.lastIndexOf(
'/')+1);
563 attname+=rl.substring(rl.lastIndexOf(
'/')+1);
566 if(ns!=
null && !ns.isEmpty() && !nscache.containsKey(ns)) {
567 nscache.put(ns,
"ns"+nscounter++);
569 if(i<(rel.size()-1)) {
574 result.put(rell, vall);
580 if(!latlist.isEmpty() && !lonlist.isEmpty()) {
581 if(latlist.size()==1 && lonlist.size()==1) {
582 result.put(
"http://www.opengis.net/ont/geosparql#asWKT",
"Point("+lonlist.get(0)+
" "+latlist.get(0)+
")");
583 }
else if(latlist.get(latlist.size()-1).equals(latlist.get(0)) && lonlist.get(lonlist.size()-1).equals(lonlist.get(0))) {
584 StringBuilder builder=
new StringBuilder();
585 for(
int i=0;i<latlist.size();i++) {
586 builder.append(lonlist.get(i)+
" "+latlist.get(i)+
",");
588 builder.delete(builder.length()-1,builder.length());
589 result.put(
"http://www.opengis.net/ont/geosparql#asWKT",
"Polygon(("+builder.toString()+
"))");
590 }
else if(!latlist.get(latlist.size()-1).equals(latlist.get(0)) || !lonlist.get(lonlist.size()-1).equals(lonlist.get(0))) {
591 StringBuilder builder=
new StringBuilder();
592 for(
int i=0;i<latlist.size();i++) {
593 builder.append(lonlist.get(i)+
" "+latlist.get(i)+
",");
595 builder.delete(builder.length()-1,builder.length());
596 result.put(
"http://www.opengis.net/ont/geosparql#asWKT",
"LineString(("+builder.toString()+
"))");
601 WebService.nameSpaceCache.put(featuretype.toLowerCase(),nscache);
602 System.out.println(
"NamespaceCache: "+WebService.nameSpaceCache);
603 System.out.println(result);
604 workingobj.put(
"attcount",attcount);
static Map< String, Map< String, String > > featureTypes
Map of feature types which have been loaded in the SemanticWFS.
Definition: TripleStoreConnector.java:74