diff --git a/extensions/freebase/module/MOD-INF/module.properties b/extensions/freebase/module/MOD-INF/module.properties
index fa86dc45f..56a95acc5 100644
--- a/extensions/freebase/module/MOD-INF/module.properties
+++ b/extensions/freebase/module/MOD-INF/module.properties
@@ -1,4 +1,4 @@
-name = freebase-extension
+name = freebase
description = Google Refine Freebase Extension
templating = false
requires = core
diff --git a/extensions/freebase/module/scripts/dialogs/extend-data-preview-dialog.js b/extensions/freebase/module/scripts/dialogs/extend-data-preview-dialog.js
index e92565e65..43b574f10 100644
--- a/extensions/freebase/module/scripts/dialogs/extend-data-preview-dialog.js
+++ b/extensions/freebase/module/scripts/dialogs/extend-data-preview-dialog.js
@@ -6,7 +6,7 @@ function ExtendDataPreviewDialog(column, columnIndex, rowIndices, onDone) {
this._extension = { properties: [] };
var self = this;
- this._dialog = $(DOM.loadHTML("freebase-extension", "scripts/dialogs/extend-data-preview-dialog.html"));
+ this._dialog = $(DOM.loadHTML("freebase", "scripts/dialogs/extend-data-preview-dialog.html"));
this._elmts = DOM.bind(this._dialog);
this._elmts.dialogHeader.text("Add Columns from Freebase Based on Column " + column.name);
this._elmts.resetButton.click(function() {
@@ -135,7 +135,7 @@ ExtendDataPreviewDialog.prototype._update = function() {
};
$.post(
- "/command/freebase-extension/preview-extend-data?" + $.param(params),
+ "/command/freebase/preview-extend-data?" + $.param(params),
{
rowIndices: JSON.stringify(this._rowIndices),
extension: JSON.stringify(this._extension)
diff --git a/extensions/freebase/module/scripts/dialogs/freebase-loading-dialog.js b/extensions/freebase/module/scripts/dialogs/freebase-loading-dialog.js
index cf9e885e4..8e2e29aad 100644
--- a/extensions/freebase/module/scripts/dialogs/freebase-loading-dialog.js
+++ b/extensions/freebase/module/scripts/dialogs/freebase-loading-dialog.js
@@ -5,7 +5,7 @@ function FreebaseLoadingDialog() {
FreebaseLoadingDialog.prototype._createDialog = function() {
var self = this;
- var dialog = $(DOM.loadHTML("freebase-extension", "scripts/dialogs/freebase-loading-dialog.html"));
+ var dialog = $(DOM.loadHTML("freebase", "scripts/dialogs/freebase-loading-dialog.html"));
this._elmts = DOM.bind(dialog);
this._elmts.cancelButton.click(function() { self._dismiss(); });
@@ -14,7 +14,7 @@ FreebaseLoadingDialog.prototype._createDialog = function() {
var loadButton = this._elmts.loadButton;
var check_authorization = function(cont) {
- $.get("/command/freebase-extension/check-authorization/" + provider, function(data) {
+ $.get("/command/freebase/check-authorization/" + provider, function(data) {
if ("status" in data && data.code == "/api/status/ok") {
authorization.html('Signed in as: ' + data.username + ' | Sign Out').show();
DOM.bind(authorization).signout.click(function() {
@@ -50,7 +50,7 @@ FreebaseLoadingDialog.prototype._createDialog = function() {
"guid": null
}];
- $.post("/command/freebase-extension/mqlwrite/" + provider,
+ $.post("/command/freebase/mqlwrite/" + provider,
{ "query" : JSON.stringify(mql_query) },
function(data) {
if ("status" in data && data.code == "/api/status/ok") {
@@ -66,7 +66,7 @@ FreebaseLoadingDialog.prototype._createDialog = function() {
var show_triples = function(cont) {
$.post(
- "/command/freebase-extension/preview-protograph?" + $.param({ project: theProject.id }),
+ "/command/freebase/preview-protograph?" + $.param({ project: theProject.id }),
{
protograph: JSON.stringify(theProject.overlayModels.freebaseProtograph || {}),
engine: JSON.stringify(ui.browsingEngine.getJSON())
@@ -143,7 +143,7 @@ FreebaseLoadingDialog.prototype._load = function() {
var doLoad = function() {
var dismissBusy = DialogSystem.showBusy();
- $.post("/command/freebase-extension/upload-data",
+ $.post("/command/freebase/upload-data",
{
project: theProject.id,
"qa" : qa,
diff --git a/extensions/freebase/module/scripts/dialogs/schema-alignment/dialog.js b/extensions/freebase/module/scripts/dialogs/schema-alignment/dialog.js
index ebb585bfb..f32a4c979 100644
--- a/extensions/freebase/module/scripts/dialogs/schema-alignment/dialog.js
+++ b/extensions/freebase/module/scripts/dialogs/schema-alignment/dialog.js
@@ -170,7 +170,7 @@ SchemaAlignmentDialog.prototype._constructFooter = function(footer) {
var protograph = self.getJSON();
Refine.postProcess(
- "freebase-extension",
+ "freebase",
"save-protograph",
{},
{ protograph: JSON.stringify(protograph) },
@@ -264,7 +264,7 @@ SchemaAlignmentDialog.prototype.preview = function() {
var protograph = this.getJSON();
$.post(
- "/command/freebase-extension/preview-protograph?" + $.param({ project: theProject.id }),
+ "/command/freebase/preview-protograph?" + $.param({ project: theProject.id }),
{ protograph: JSON.stringify(protograph), engine: JSON.stringify(ui.browsingEngine.getJSON()) },
function(data) {
if ("mqllike" in data) {
diff --git a/extensions/freebase/src/com/google/refine/freebase/operations/SaveProtographOperation.java b/extensions/freebase/src/com/google/refine/freebase/operations/SaveProtographOperation.java
index 5b7a41f0d..2b104129c 100644
--- a/extensions/freebase/src/com/google/refine/freebase/operations/SaveProtographOperation.java
+++ b/extensions/freebase/src/com/google/refine/freebase/operations/SaveProtographOperation.java
@@ -36,12 +36,12 @@ public class SaveProtographOperation extends AbstractOperation {
writer.object();
writer.key("op"); writer.value(OperationRegistry.s_opClassToName.get(this.getClass()));
- writer.key("description"); writer.value(getBriefDescription());
+ writer.key("description"); writer.value(getBriefDescription(null));
writer.key("protograph"); _protograph.write(writer, options);
writer.endObject();
}
- protected String getBriefDescription() {
+ protected String getBriefDescription(Project project) {
return "Save schema alignment skeleton";
}
@@ -49,7 +49,7 @@ public class SaveProtographOperation extends AbstractOperation {
protected HistoryEntry createHistoryEntry(Project project, long historyEntryID) throws Exception {
Change change = new ProtographChange(_protograph);
- return new HistoryEntry(historyEntryID, project, getBriefDescription(), SaveProtographOperation.this, change);
+ return new HistoryEntry(historyEntryID, project, getBriefDescription(project), SaveProtographOperation.this, change);
}
static public class ProtographChange implements Change {
diff --git a/extensions/freebase/src/com/google/refine/freebase/protograph/transpose/TripleLoaderTransposedNodeFactory.java b/extensions/freebase/src/com/google/refine/freebase/protograph/transpose/TripleLoaderTransposedNodeFactory.java
index 748e15c13..5a9aa107c 100644
--- a/extensions/freebase/src/com/google/refine/freebase/protograph/transpose/TripleLoaderTransposedNodeFactory.java
+++ b/extensions/freebase/src/com/google/refine/freebase/protograph/transpose/TripleLoaderTransposedNodeFactory.java
@@ -195,7 +195,7 @@ public class TripleLoaderTransposedNodeFactory implements TransposedNodeFactory
sb.append("{ \"s\" : \""); sb.append(subject); sb.append('"');
sb.append(", \"p\" : \""); sb.append(predicate); sb.append('"');
sb.append(", \"o\" : "); sb.append(s);
- sb.append(", \"lang\" : "); sb.append(lang);
+ sb.append(", \"lang\" : \""); sb.append(lang); sb.append('"');
if (subjectCell != null) {
sb.append(", \"meta\" : { ");
@@ -409,18 +409,25 @@ public class TripleLoaderTransposedNodeFactory implements TransposedNodeFactory
}
public Object internalWrite(String subject, String predicate, Project project, int subjectRowIndex, int subjectCellIndex, Cell subjectCell) {
- if (subject != null) {
- if ("/type/text".equals(node.lang)) {
- writeLine(subject, predicate, cell.value, node.lang, project,
- subjectRowIndex, subjectCellIndex, subjectCell, !load);
+ Object value = cell.value;
+ if (value != null) {
+ if ("/type/text".equals(node.valueType)) {
+ value = value.toString();
+ if (subject != null) {
+ writeLine(subject, predicate, value, node.lang, project,
+ subjectRowIndex, subjectCellIndex, subjectCell, !load);
+ }
} else {
- writeLine(subject, predicate, cell.value, project,
- subjectRowIndex, subjectCellIndex, subjectCell,
- -1, -1, null, !load);
+ value = validateValue(value, node.valueType);
+ if (subject != null && value != null) {
+ writeLine(subject, predicate, value, project,
+ subjectRowIndex, subjectCellIndex, subjectCell,
+ -1, -1, null, !load);
+ }
}
}
- return cell.value;
+ return value;
}
}
@@ -472,16 +479,24 @@ public class TripleLoaderTransposedNodeFactory implements TransposedNodeFactory
}
public Object internalWrite(String subject, String predicate, Project project, int subjectRowIndex, int subjectCellIndex, Cell subjectCell) {
- if ("/type/text".equals(node.lang)) {
- writeLine(subject, predicate, node.value, node.lang, project,
- subjectRowIndex, subjectCellIndex, subjectCell, !load);
- } else {
- writeLine(subject, predicate, node.value, project,
- subjectRowIndex, subjectCellIndex, subjectCell,
- -1, -1, null, !load);
+ Object value = node.value;
+ if (value != null) {
+ if ("/type/text".equals(node.valueType)) {
+ value = value.toString();
+ if (subject != null) {
+ writeLine(subject, predicate, value, node.lang, project,
+ subjectRowIndex, subjectCellIndex, subjectCell, !load);
+ }
+ } else {
+ value = validateValue(value, node.valueType);
+ if (subject != null && value != null) {
+ writeLine(subject, predicate, value, project,
+ subjectRowIndex, subjectCellIndex, subjectCell,
+ -1, -1, null, !load);
+ }
+ }
}
-
- return node.value;
+ return value;
}
}
@@ -722,4 +737,48 @@ public class TripleLoaderTransposedNodeFactory implements TransposedNodeFactory
writeLine(sb.toString());
}
}
+
+ static protected Object validateValue(Object value, String valueType) {
+ if ("/type/datetime".equals(valueType)) {
+ if (!(value instanceof String)) {
+ value = value.toString();
+ }
+ } else if ("/type/boolean".equals(valueType)) {
+ if (!(value instanceof Boolean)) {
+ value = Boolean.parseBoolean(value.toString());
+ }
+ } else if ("/type/int".equals(valueType)) {
+ if (value instanceof Number) {
+ value = ((Number) value).longValue();
+ } else {
+ try {
+ value = Long.parseLong(value.toString());
+ } catch (NumberFormatException e) {
+ value = null;
+ }
+ }
+ } else if ("/type/float".equals(valueType)) {
+ if (value instanceof Number) {
+ value = ((Number) value).floatValue();
+ } else {
+ try {
+ value = Float.parseFloat(value.toString());
+ } catch (NumberFormatException e) {
+ value = null;
+ }
+ }
+ } else if ("/type/double".equals(valueType)) {
+ if (value instanceof Number) {
+ value = ((Number) value).doubleValue();
+ } else {
+ try {
+ value = Double.parseDouble(value.toString());
+ } catch (NumberFormatException e) {
+ value = null;
+ }
+ }
+ }
+
+ return value;
+ }
}