");
parseOntologyContent(ontologyContent);
}
};
// check what this thing is doing;
xhr.onreadystatechange = function (){
if ( xhr.readyState === 4 && xhr.status === 0 ) {
ontologyMenu.append_message_toLastBulletPoint("
Old protocol also failed to establish connection to OWL2VOWL service!");
loadingModule.setErrorMode();
ontologyMenu.append_bulletPoint("Failed to load ontology");
ontologyMenu.append_message_toLastBulletPoint("
Could not connect to OWL2VOWL service ");
loadingModule.showErrorDetailsMessage();
}
};
xhr.send(formData);
}
function requestServerTimeStampForIRI_Converte( callback, parameterArray ){
d3.xhr("serverTimeStamp", "application/text", function ( error, request ){
loadingModule.setBusyMode();
if ( error ) {
// could not get server timestamp -> no connection to owl2vowl
ontologyMenu.append_bulletPoint("Could not establish connection to OWL2VOWL service");
loadingModule.setErrorMode();
ontologyMenu.append_bulletPoint("Failed to load ontology");
ontologyMenu.append_message_toLastBulletPoint("
Could not connect to OWL2VOWL service ");
loadingModule.showErrorDetailsMessage();
} else {
conversion_sessionId = request.responseText;
ontologyMenu.setConversionID(conversion_sessionId);
// update paramater for new communication paradigm
parameterArray[0] = parameterArray[0] + "&sessionId=" + conversion_sessionId;
parameterArray.push(conversion_sessionId);
callback(parameterArray);
}
});
}
function requestServerTimeStamp( callback, parameterArray ){
d3.xhr("serverTimeStamp", "application/text", function ( error, request ){
if ( error ) {
// could not get server timestamp -> no connection to owl2vowl
ontologyMenu.append_bulletPoint("Could not establish connection to OWL2VOWL service");
fallbackConversion(parameterArray); // tries o2v version0.3.4 communication
} else {
conversion_sessionId = request.responseText;
ontologyMenu.setConversionID(conversion_sessionId);
console.log("Request Session ID:" + conversion_sessionId);
callback(parameterArray[0], parameterArray[1], conversion_sessionId);
}
});
}
loadingModule.directInput = function ( text ){
ontologyMenu.clearDetailInformation();
parseOntologyContent(text);
};
loadingModule.loadFromOWL2VOWL = function ( ontoContent, filename ){
loadingWasSuccessFul = false;
var old = d3.select("#bulletPoint_container").node().innerHTML;
if ( old.indexOf("(with warnings)") !== -1 ) {
missingImportsWarning = true;
}
if ( ontologyMenu.cachedOntology(ontoContent) ) {
ontologyMenu.append_bulletPoint("Loading already cached ontology: " + filename);
parseOntologyContent(ontoContent);
} else { // set parse the ontology content;
parseOntologyContent(ontoContent);
}
};
loadingModule.from_presetOntology = function ( selectedOntology ){
ontologyMenu.append_bulletPoint("Retrieving ontology: " + selectedOntology);
loadPresetOntology(selectedOntology);
};
function loadPresetOntology( ontology ){
// check if already cached in ontology menu?
var f2r;
var loadingNewOntologyForEditor=false;
if ( ontology.indexOf("new_ontology") !== -1 ) {
loadingModule.hideLoadingIndicator();
graph.showEditorHintIfNeeded();
f2r = "./data/new_ontology.json";
loadingNewOntologyForEditor=true;
}
loadingWasSuccessFul = false;
var ontologyContent = "";
if ( ontologyMenu.cachedOntology(ontology) ) {
ontologyMenu.append_bulletPoint("Loading already cached ontology: " + ontology);
ontologyContent = ontologyMenu.cachedOntology(ontology);
loadingWasSuccessFul = true; // cached Ontology should be true;
loadingModule.showLoadingIndicator();
parseOntologyContent(ontologyContent);
} else {
// read the file name
var fileToRead = "./data/" + ontology + ".json";
if ( f2r ) {
fileToRead = f2r;
} // overwrite the newOntology Index
// read file
d3.xhr(fileToRead, "application/json", function ( error, request ){
var loadingSuccessful = !error;
if ( loadingSuccessful ) {
ontologyContent = request.responseText;
parseOntologyContent(ontologyContent);
} else {
if (loadingNewOntologyForEditor){
ontologyContent = '{\n' +
' "_comment": "Empty ontology for WebVOWL Editor",\n' +
' "header": {\n' +
' "languages": [\n' +
' "en"\n' +
' ],\n' +
' "baseIris": [\n' +
' "http://www.w3.org/2000/01/rdf-schema"\n' +
' ],\n' +
' "iri": "http://visualdataweb.org/newOntology/",\n' +
' "title": {\n' +
' "en": "New ontology"\n' +
' },\n' +
' "description": {\n' +
' "en": "New ontology description"\n' +
' }\n' +
' },\n' +
' "namespace": [],\n' +
' "metrics": {\n' +
' "classCount": 0,\n' +
' "datatypeCount": 0,\n' +
' "objectPropertyCount": 0,\n' +
' "datatypePropertyCount": 0,\n' +
' "propertyCount": 0,\n' +
' "nodeCount": 0,\n' +
' "individualCount": 0\n' +
' }\n' +
'}\n';
parseOntologyContent(ontologyContent);
}else{
// some error occurred
ontologyMenu.append_bulletPoint("Failed to load: " + ontology);
if (error.status===0){ // assumption this is CORS error when running locally (error status == 0)
ontologyMenu.append_message_toLastBulletPoint(" ERROR STATUS: " + error.status);
if (window.location.toString().startsWith("file:/")){
ontologyMenu.append_message_toLastBulletPoint("
WebVOWL runs in a local instance.
");
ontologyMenu.append_message_toLastBulletPoint("CORS prevents to automatically load files on host system.
");
ontologyMenu.append_message_toLastBulletPoint("You can load preprocessed ontologies (i.e. VOWL-JSON files) using the upload feature in the ontology menu or by dragging the files and dropping them on the canvas.
");
ontologyMenu.append_message_toLastBulletPoint("Hint: Note that the conversion of ontologies into the VOWL-JSON format is not part of WebVOWL but requires an additional converter such as OWL2VOWL.
");
ontologyMenu.append_message_toLastBulletPoint("Ontologies can be created using the editor mode (i.e. activate editing mode in Modes menu and create a new ontology using the Ontology menu.
");
}
}else {
ontologyMenu.append_message_toLastBulletPoint(" ERROR STATUS: " + error.status);
}
graph.handleOnLoadingError();
loadingModule.setErrorMode();
}
}
});
}
}
/** -- PARSE JSON CONTENT -- **/
function parseOntologyContent( content ){
ontologyMenu.append_bulletPoint("Reading ontology graph ... ");
var _loader = ontologyMenu.getLoadingFunction();
_loader(content, ontologyIdentifierFromURL, "noAlternativeNameYet");
}
loadingModule.notValidJsonFile = function (){
graph.clearGraphData();
ontologyMenu.append_message_toLastBulletPoint(" failed");
ontologyMenu.append_message_toLastBulletPoint("
Error: Received empty graph");
loadingWasSuccessFul = false;
graph.handleOnLoadingError();
};
loadingModule.validJsonFile = function (){
ontologyMenu.append_message_toLastBulletPoint("done");
loadingWasSuccessFul = true;
};
/** --- HELPER FUNCTIONS **/
function identifyParameter( url ){
var numParameters = (url.match(/#/g) || []).length;
// create parameters array
var paramArray = [];
if ( numParameters > 0 ) {
var tokens = url.split("#");
// skip the first token since it is the address of the server
for ( var i = 1; i < tokens.length; i++ ) {
if ( tokens[i].length === 0 ) {
// this token belongs actually to the last paramArray
paramArray[paramArray.length - 1] = paramArray[paramArray.length - 1] + "#";
} else {
paramArray.push(tokens[i]);
}
}
}
return paramArray;
}
function loadGraphOptions( parameterArray ){
var optString = "opts=";
function loadDefaultConfig(){
graph.options().setOptionsFromURL(graph.options().defaultConfig(), false);
}
function loadCustomConfig( opts ){
var changeEditingFlag = false;
var defObj = graph.options().defaultConfig();
for ( var i = 0; i < opts.length; i++ ) {
var keyVal = opts[i].split('=');
if ( keyVal[0] === "editorMode" ) {
changeEditingFlag = true;
}
defObj[keyVal[0]] = keyVal[1];
}
graph.options().setOptionsFromURL(defObj, changeEditingFlag);
}
function identifyOptions( paramArray ){
if ( paramArray[0].indexOf(optString) >= 0 ) {
// parse the parameters;
var parameterLength = paramArray[0].length;
var givenOptionsStr = paramArray[0].substr(5, parameterLength - 6);
var optionsArray = givenOptionsStr.split(';');
loadCustomConfig(optionsArray);
} else {
ontologyIdentifierFromURL = paramArray[0];
loadDefaultConfig();
}
}
function identifyOptionsAndOntology( paramArray ){
if ( paramArray[0].indexOf(optString) >= 0 ) {
// parse the parameters;
var parameterLength = paramArray[0].length;
var givenOptionsStr = paramArray[0].substr(5, parameterLength - 6);
var optionsArray = givenOptionsStr.split(';');
loadCustomConfig(optionsArray);
} else {
loadDefaultConfig();
}
ontologyIdentifierFromURL = paramArray[1];
}
switch ( parameterArray.length ) {
case 0:
loadDefaultConfig();
break;
case 1:
identifyOptions(parameterArray);
break;
case 2:
identifyOptionsAndOntology(parameterArray);
break;
default :
console.log("To many input parameters , loading default config");
loadDefaultConfig();
ontologyIdentifierFromURL = "ERROR_TO_MANY_INPUT_PARAMETERS";
}
}
function identifyOntologyLoadingMethod( url ){
var iriKey = "iri=";
var urlKey = "url=";
var fileKey = "file=";
var method = -1;
if ( url.substr(0, fileKey.length) === fileKey ) {
method = FILE_UPLOAD;
} else if ( url.substr(0, urlKey.length) === urlKey ) {
method = JSON_URL;
} else if ( url.substr(0, iriKey.length) === iriKey ) {
method = IRI_URL;
} else {
method = PREDEFINED;
}
return method;
}
return loadingModule;
}
;