From 9636eb2abbdf94aeaf11ed80a8852d9a411961f4 Mon Sep 17 00:00:00 2001 From: Varun Ratnakar Date: Mon, 25 Feb 2019 09:15:48 +0530 Subject: [PATCH] Allow arbitrary uris --- .../component/api/impl/kb/ComponentKB.java | 4 +- .../api/impl/kb/ComponentReasoningKB.java | 18 +++--- .../catalog/data/api/DataReasoningAPI.java | 2 +- .../data/api/impl/kb/DataCreationKB.java | 11 +++- .../catalog/data/api/impl/kb/DataKB.java | 2 +- .../data/api/impl/kb/DataReasoningKB.java | 4 +- .../api/impl/kb/WorkflowGenerationKB.java | 5 +- .../portal/controllers/DataController.java | 8 +-- .../portal/controllers/RunController.java | 2 - portal/src/main/webapp/js/gui/DataViewer.js | 62 ++++++++++++++----- 10 files changed, 75 insertions(+), 43 deletions(-) diff --git a/planner/src/main/java/edu/isi/wings/catalog/component/api/impl/kb/ComponentKB.java b/planner/src/main/java/edu/isi/wings/catalog/component/api/impl/kb/ComponentKB.java index 6bbd6fd1..877ede55 100644 --- a/planner/src/main/java/edu/isi/wings/catalog/component/api/impl/kb/ComponentKB.java +++ b/planner/src/main/java/edu/isi/wings/catalog/component/api/impl/kb/ComponentKB.java @@ -648,8 +648,8 @@ protected ComponentRole getRole(KBObject argobj) { arg.setParam(true); else if (type.getID().equals(this.pcns + "DataArgument")) arg.setParam(false); - else if (type.getNamespace().equals(this.dcdomns) - || type.getNamespace().equals(this.dcns)) + else /*if (type.getNamespace().equals(this.dcdomns) + || type.getNamespace().equals(this.dcns))*/ arg.setType(type.getID()); } KBObject role = kb.getPropertyValue(argobj, argidProp); diff --git a/planner/src/main/java/edu/isi/wings/catalog/component/api/impl/kb/ComponentReasoningKB.java b/planner/src/main/java/edu/isi/wings/catalog/component/api/impl/kb/ComponentReasoningKB.java index 528dcef5..bd7b79ad 100644 --- a/planner/src/main/java/edu/isi/wings/catalog/component/api/impl/kb/ComponentReasoningKB.java +++ b/planner/src/main/java/edu/isi/wings/catalog/component/api/impl/kb/ComponentReasoningKB.java @@ -91,7 +91,7 @@ private void initializeMetrics() { } protected KBObject copyObjectIntoKB(String id, KBObject obj, KBAPI tkb, String includeNS, - String excludeNS, boolean direct) { + ArrayList excludeNS, boolean direct) { // Add component to the temporary KB (add all its classes explicitly) for(KBTriple triple : this.getTriplesForObject(id, obj, includeNS, excludeNS, direct)) { tkb.addTriple(triple); @@ -100,7 +100,7 @@ protected KBObject copyObjectIntoKB(String id, KBObject obj, KBAPI tkb, String i } protected KBObject copyObjectClassesIntoKB(String id, KBObject obj, KBAPI tkb, String includeNS, - String excludeNS, boolean direct) { + ArrayList excludeNS, boolean direct) { // Add component to the temporary KB (add all its classes explicitly) for(KBTriple triple : this.getObjectClassTriples(id, obj, includeNS, excludeNS, direct)) { tkb.addTriple(triple); @@ -129,7 +129,7 @@ protected ArrayList getConcreteComponentsForAbstract(String id) { } protected ArrayList getTriplesForObject(String id, KBObject obj, - String includeNS, String excludeNS, boolean direct) { + String includeNS, ArrayList excludeNS, boolean direct) { ArrayList triples = new ArrayList(); triples.add(ontologyFactory.getTriple( ontologyFactory.getObject(id), @@ -140,7 +140,7 @@ protected ArrayList getTriplesForObject(String id, KBObject obj, } protected ArrayList getObjectClassTriples(String id, KBObject obj, - String includeNS, String excludeNS, boolean direct) { + String includeNS, ArrayList excludeNS, boolean direct) { // Add component to the temporary KB (add all its classes explicitly) ArrayList triples = new ArrayList(); @@ -158,8 +158,8 @@ protected ArrayList getObjectClassTriples(String id, KBObject obj, ArrayList objclses = this.getAllCachedClassesOfInstance(obj.getID(), direct); for (KBObject objcls : objclses) { - if ((includeNS != null && objcls.getNamespace().equals(includeNS)) - || (excludeNS != null && !objcls.getNamespace().equals(excludeNS))) { + if ( (includeNS != null && objcls.getNamespace().equals(includeNS)) + || (excludeNS != null && !excludeNS.contains(objcls.getNamespace())) ) { triples.add(ontologyFactory.getTriple( tobj, ontologyFactory.getObject(KBUtils.RDF + "type"), objcls)); } @@ -426,8 +426,10 @@ public ArrayList findDataDetails(ComponentPacket details, boole // Copy over the argument's classes to the variable KBObject argobj = this.kb.getIndividual(arg.getID()); - KBObject varobj = this.copyObjectClassesIntoKB(varid, argobj, tkb, this.dcdomns, - null, false); + ArrayList excludeNS = new ArrayList(); + excludeNS.add(this.pcns); + excludeNS.add(this.dcns); + KBObject varobj = this.copyObjectClassesIntoKB(varid, argobj, tkb, null, excludeNS, false); if(varobj == null) continue; diff --git a/planner/src/main/java/edu/isi/wings/catalog/data/api/DataReasoningAPI.java b/planner/src/main/java/edu/isi/wings/catalog/data/api/DataReasoningAPI.java index c3663d96..24443586 100644 --- a/planner/src/main/java/edu/isi/wings/catalog/data/api/DataReasoningAPI.java +++ b/planner/src/main/java/edu/isi/wings/catalog/data/api/DataReasoningAPI.java @@ -31,7 +31,7 @@ public interface DataReasoningAPI extends TransactionsAPI { // API to help in Workflow Planning and Generation - ArrayList findDataSources(ArrayList dods); + ArrayList findDataSources(ArrayList dods, String templateNS); Metrics findDataMetricsForDataObject(String dataObjectId); diff --git a/planner/src/main/java/edu/isi/wings/catalog/data/api/impl/kb/DataCreationKB.java b/planner/src/main/java/edu/isi/wings/catalog/data/api/impl/kb/DataCreationKB.java index 270bffbb..990093eb 100644 --- a/planner/src/main/java/edu/isi/wings/catalog/data/api/impl/kb/DataCreationKB.java +++ b/planner/src/main/java/edu/isi/wings/catalog/data/api/impl/kb/DataCreationKB.java @@ -102,7 +102,7 @@ public ArrayList getAllDatatypeIds() { "SELECT ?type\n" + "WHERE {\n" + "?type a <"+KBUtils.OWL+"Class> .\n" + - "FILTER ( STRSTARTS(STR(?type), \"" + this.dcdomns + "\"))\n" + + //"FILTER ( STRSTARTS(STR(?type), \"" + this.dcdomns + "\"))\n" + "}"; this.start_read(); @@ -114,7 +114,8 @@ public ArrayList getAllDatatypeIds() { if(vals.get("type") == null) continue; String typeid = vals.get("type").getID(); - list.add(typeid); + if(!typeid.equals(this.dcns + "Metrics")) + list.add(typeid); } this.end(); return list; @@ -719,9 +720,11 @@ private DataTree createHierarchy(String classid, boolean types_only) { } ArrayList subclasses = this.getSubClasses(cls); for (KBObject subcls : subclasses) { + /* if (!subcls.getNamespace().equals(this.dcdomns) - && !subcls.getNamespace().equals(this.dcdomns)) + && !subcls.getNamespace().equals(this.dcns)) continue; + */ DataItem institem = new DataItem(subcls.getID(), DataItem.DATATYPE); DataTreeNode childnode = new DataTreeNode(institem); node.addChild(childnode); @@ -775,8 +778,10 @@ private ArrayList createMetadataProperties(ArrayList ArrayList list = new ArrayList(); for (KBObject property : properties) { // Ignore properties not declared in this domain + /* if (!property.getNamespace().equals(this.dcdomns)) continue; + */ MetadataProperty prop = this.createMetadataProperty(property); if (prop != null) list.add(prop); diff --git a/planner/src/main/java/edu/isi/wings/catalog/data/api/impl/kb/DataKB.java b/planner/src/main/java/edu/isi/wings/catalog/data/api/impl/kb/DataKB.java index a00b38f7..b5a6e65b 100644 --- a/planner/src/main/java/edu/isi/wings/catalog/data/api/impl/kb/DataKB.java +++ b/planner/src/main/java/edu/isi/wings/catalog/data/api/impl/kb/DataKB.java @@ -64,7 +64,7 @@ public DataKB(Properties props, boolean create_writers, boolean plainkb) { this.dcdomns = onturl + hash; this.dclibns = liburl + hash; - this.sparqlFactory = new SparqlFactory(this.dcns, this.dcdomns, this.liburl); + this.sparqlFactory = new SparqlFactory(); this.tdbRepository = props.getProperty("tdb.repository.dir"); if (tdbRepository == null) { diff --git a/planner/src/main/java/edu/isi/wings/catalog/data/api/impl/kb/DataReasoningKB.java b/planner/src/main/java/edu/isi/wings/catalog/data/api/impl/kb/DataReasoningKB.java index 597bda3a..8d9cdad6 100644 --- a/planner/src/main/java/edu/isi/wings/catalog/data/api/impl/kb/DataReasoningKB.java +++ b/planner/src/main/java/edu/isi/wings/catalog/data/api/impl/kb/DataReasoningKB.java @@ -74,7 +74,7 @@ public DataReasoningKB(Properties props) { * from the dc namespace */ @Override - public ArrayList findDataSources(ArrayList dods) { + public ArrayList findDataSources(ArrayList dods, String templateNS) { if (logger.isInfoEnabled()) { HashMap argumentMap = new HashMap(2); argumentMap.put("dods", dods); @@ -90,7 +90,7 @@ public ArrayList findDataSources(ArrayList dods) result = new ArrayList(); - SparqlQuery sq = sparqlFactory.makeSparqlQueryFromDataObjectDescriptions(dods); + SparqlQuery sq = sparqlFactory.makeSparqlQueryFromDataObjectDescriptions(dods, templateNS); HashMap variableMap = sq.getVariableMap(); String query = sq.getQuery(); diff --git a/planner/src/main/java/edu/isi/wings/planner/api/impl/kb/WorkflowGenerationKB.java b/planner/src/main/java/edu/isi/wings/planner/api/impl/kb/WorkflowGenerationKB.java index e41b9404..9296c64c 100644 --- a/planner/src/main/java/edu/isi/wings/planner/api/impl/kb/WorkflowGenerationKB.java +++ b/planner/src/main/java/edu/isi/wings/planner/api/impl/kb/WorkflowGenerationKB.java @@ -388,8 +388,10 @@ private ArrayList selectInputDataForVariables( } Variable[] variables = specializedTemplate.getVariables(); + String varNS = null; ArrayList blacklist = new ArrayList(variables.length); for (Variable variable : variables) { + varNS = variable.getNamespace(); blacklist.add(variable.getID()); } @@ -485,7 +487,8 @@ private ArrayList selectInputDataForVariables( this.addExplanation("Querying the DataReasoningAPI with the following constraints:
" + inputConstraints.toString().replaceAll(",", "
")); - ArrayList partialList = dc.findDataSources(inputConstraints); + ArrayList partialList = + dc.findDataSources(inputConstraints, varNS); if (partialList == null || partialList.isEmpty()) { diff --git a/portal/src/main/java/edu/isi/wings/portal/controllers/DataController.java b/portal/src/main/java/edu/isi/wings/portal/controllers/DataController.java index e1151bd8..778857fe 100644 --- a/portal/src/main/java/edu/isi/wings/portal/controllers/DataController.java +++ b/portal/src/main/java/edu/isi/wings/portal/controllers/DataController.java @@ -42,10 +42,7 @@ import edu.isi.wings.catalog.provenance.api.ProvenanceAPI; import edu.isi.wings.catalog.provenance.classes.ProvActivity; import edu.isi.wings.catalog.provenance.classes.Provenance; -import edu.isi.wings.catalog.resource.classes.GridkitCloud; -import edu.isi.wings.catalog.resource.classes.Machine; import edu.isi.wings.common.kb.KBUtils; -import edu.isi.wings.opmm.HashUtils; import edu.isi.wings.portal.classes.config.Config; import edu.isi.wings.portal.classes.config.ServerDetails; import edu.isi.wings.portal.classes.JsonHandler; @@ -57,13 +54,10 @@ import com.google.gson.JsonParser; import java.io.File; -import java.io.IOException; -import java.net.URL; import java.util.concurrent.ExecutionException; import org.asynchttpclient.*; import org.asynchttpclient.request.body.multipart.InputStreamPart; -import org.tukaani.xz.check.None; import static java.nio.charset.StandardCharsets.UTF_8; import static org.asynchttpclient.Dsl.basicAuthRealm; @@ -171,7 +165,7 @@ public String publishData(String dataid) { return null; } } - return null; + return null; } private String uploadFile(ServerDetails server, File datafile) { diff --git a/portal/src/main/java/edu/isi/wings/portal/controllers/RunController.java b/portal/src/main/java/edu/isi/wings/portal/controllers/RunController.java index 9b7f3f27..64305b17 100644 --- a/portal/src/main/java/edu/isi/wings/portal/controllers/RunController.java +++ b/portal/src/main/java/edu/isi/wings/portal/controllers/RunController.java @@ -20,7 +20,6 @@ import java.io.File; import java.io.IOException; import java.net.URL; -import java.net.URLEncoder; import java.util.*; import java.util.regex.Pattern; @@ -63,7 +62,6 @@ import edu.isi.wings.portal.classes.JsonHandler; import edu.isi.wings.workflow.plan.api.ExecutionPlan; import edu.isi.wings.workflow.plan.api.ExecutionStep; -import edu.isi.wings.workflow.plan.classes.ExecutionCode; import edu.isi.wings.workflow.plan.classes.ExecutionFile; import edu.isi.wings.workflow.template.TemplateFactory; import edu.isi.wings.workflow.template.api.Template; diff --git a/portal/src/main/webapp/js/gui/DataViewer.js b/portal/src/main/webapp/js/gui/DataViewer.js index a7242b95..25728f81 100644 --- a/portal/src/main/webapp/js/gui/DataViewer.js +++ b/portal/src/main/webapp/js/gui/DataViewer.js @@ -264,13 +264,13 @@ DataViewer.prototype.openDataTypeEditor = function(args) { } if (mine) myProperties.push({ - prop: getLocalName(prop.id), - range: This.getPrefixedDataRange(prop.range) + prop: prop.id, + range: This.getPrefixedDataRange(prop.range) }); else inhProperties.push({ - prop: getLocalName(prop.id), - range: This.getPrefixedDataRange(prop.range) + prop: prop.id, + range: This.getPrefixedDataRange(prop.range) }); }); @@ -298,10 +298,10 @@ DataViewer.prototype.openDataTypeEditor = function(args) { rec.set('prop', sdata.prop); var mod = rec.modified; if (!mod.prop && !mod.range) { - propmods.addedProperties[This.ontns + sdata.prop] = sdata; + propmods.addedProperties[sdata.prop] = sdata; } else { var prop = mod.prop ? mod.prop: sdata.prop; - propmods.modifiedProperties[This.ontns + prop] = sdata; + propmods.modifiedProperties[prop] = sdata; } } }); @@ -445,6 +445,7 @@ DataViewer.prototype.openDataTypeEditor = function(args) { var typeTabPanel = new Ext.tab.Panel({ plain: true, + region: 'center', margin: 5 }); @@ -474,6 +475,7 @@ DataViewer.prototype.openDataTypeEditor = function(args) { handler: function() { var p = new dataPropRange(); p.set('range', "xsd:string"); + p.set('prop', This.ontns); var pos = dataTypeStore.getCount(); editorPlugin.cancelEdit(); dataTypeStore.insert(pos, p); @@ -498,7 +500,7 @@ DataViewer.prototype.openDataTypeEditor = function(args) { // This property was just added, don't mark it as a // deletedProperty for the server } else if (prop != "") { - propmods.deletedProperties[This.ontns + prop] = 1; + propmods.deletedProperties[prop] = 1; } dataTypeStore.remove(r); } @@ -517,6 +519,9 @@ DataViewer.prototype.openDataTypeEditor = function(args) { flex: 1, header: 'Property', editor: propEditor, + renderer: function(url) { + return getLocalName(url); + }, editable: This.advanced_user ? true: false, menuDisabled: true }, { @@ -609,7 +614,22 @@ DataViewer.prototype.openDataTypeEditor = function(args) { layout: 'fit', tbar: mainTbar, //autoScroll: true, - items: typeTabPanel + items: [ + { + layout: 'border', + border: false, + items: [ + typeTabPanel, + { + html: ''+id+'', + margins: '0 0 6 6', + border: false, + region: 'south', + bodyStyle: { background: 'transparent' } + } + ] + } + ] }); tab.add(mainPanel); }; @@ -666,14 +686,19 @@ DataViewer.prototype.confirmAndRenameDatatype = function(node) { var dtypeid = node.data.id; var dtypeName = getLocalName(dtypeid); + var title = "Rename " + dtypeName; + for(var i=0; i<150; i++) + title += " "; + title += "."; - Ext.Msg.prompt("Rename " + dtypeName, "Enter new name:", function(btn, text) { + Ext.Msg.prompt(title, "Enter new name:", function(btn, text) { if (btn == 'ok' && text) { - var newName = getRDFID(text); - var newid = This.ontns + newName; + var newName = getRDFID(getLocalName(text)); + var newid = getNamespace(text) + newName; + var enode = This.dataTreePanel.getStore().getNodeById(newid); if (enode) { - showError(getRDFID(text) + ' already exists ! Choose a different name.'); + showError(newName + ' already exists ! Choose a different name.'); This.confirmAndRenameDatatype(node); return; } @@ -704,7 +729,7 @@ DataViewer.prototype.confirmAndRenameDatatype = function(node) { } }); } - }, this, false, dtypeName); + }, this, false, dtypeid); }; DataViewer.prototype.confirmAndDeleteData = function(node) { @@ -1500,9 +1525,14 @@ DataViewer.prototype.addDatatype = function(parentNode) { } var parentType = parentNode.data.id; - Ext.Msg.prompt("Add Datatype", "Enter name for the new Datatype:", function(btn, text) { + var title = "Add Datatype"; + for(var i=0; i<150; i++) + title += " "; + title += "."; + + Ext.Msg.prompt(title, "Enter name for the new Datatype:", function(btn, text) { if (btn == 'ok' && text) { - var newid = This.ontns + getRDFID(text); + var newid = getNamespace(text) + getRDFID(getLocalName(text)); var enode = This.dataTreePanel.getStore().getNodeById(newid); if (enode) { showError('Datatype ' + text + ' already exists'); @@ -1540,7 +1570,7 @@ DataViewer.prototype.addDatatype = function(parentNode) { } }); } - }, window, false); + }, window, false, this.ontns); }; DataViewer.prototype.saveDatatype = function(