Renamed "freebase-extension" to just "freebase".
Tried to validate literal values when generating freeq triples (e.g., so numeric years get converted into strings for /type/datetime properties). git-svn-id: http://google-refine.googlecode.com/svn/trunk@1562 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
parent
6686a48804
commit
e251a77077
@ -1,4 +1,4 @@
|
|||||||
name = freebase-extension
|
name = freebase
|
||||||
description = Google Refine Freebase Extension
|
description = Google Refine Freebase Extension
|
||||||
templating = false
|
templating = false
|
||||||
requires = core
|
requires = core
|
||||||
|
@ -6,7 +6,7 @@ function ExtendDataPreviewDialog(column, columnIndex, rowIndices, onDone) {
|
|||||||
this._extension = { properties: [] };
|
this._extension = { properties: [] };
|
||||||
|
|
||||||
var self = this;
|
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 = DOM.bind(this._dialog);
|
||||||
this._elmts.dialogHeader.text("Add Columns from Freebase Based on Column " + column.name);
|
this._elmts.dialogHeader.text("Add Columns from Freebase Based on Column " + column.name);
|
||||||
this._elmts.resetButton.click(function() {
|
this._elmts.resetButton.click(function() {
|
||||||
@ -135,7 +135,7 @@ ExtendDataPreviewDialog.prototype._update = function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
$.post(
|
$.post(
|
||||||
"/command/freebase-extension/preview-extend-data?" + $.param(params),
|
"/command/freebase/preview-extend-data?" + $.param(params),
|
||||||
{
|
{
|
||||||
rowIndices: JSON.stringify(this._rowIndices),
|
rowIndices: JSON.stringify(this._rowIndices),
|
||||||
extension: JSON.stringify(this._extension)
|
extension: JSON.stringify(this._extension)
|
||||||
|
@ -5,7 +5,7 @@ function FreebaseLoadingDialog() {
|
|||||||
|
|
||||||
FreebaseLoadingDialog.prototype._createDialog = function() {
|
FreebaseLoadingDialog.prototype._createDialog = function() {
|
||||||
var self = this;
|
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 = DOM.bind(dialog);
|
||||||
this._elmts.cancelButton.click(function() { self._dismiss(); });
|
this._elmts.cancelButton.click(function() { self._dismiss(); });
|
||||||
|
|
||||||
@ -14,7 +14,7 @@ FreebaseLoadingDialog.prototype._createDialog = function() {
|
|||||||
var loadButton = this._elmts.loadButton;
|
var loadButton = this._elmts.loadButton;
|
||||||
|
|
||||||
var check_authorization = function(cont) {
|
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") {
|
if ("status" in data && data.code == "/api/status/ok") {
|
||||||
authorization.html('Signed in as: <a target="_new" href="http://www.freebase.com/view/user/' + data.username + '">' + data.username + '</a> | <a href="javascript:{}" bind="signout">Sign Out</a>').show();
|
authorization.html('Signed in as: <a target="_new" href="http://www.freebase.com/view/user/' + data.username + '">' + data.username + '</a> | <a href="javascript:{}" bind="signout">Sign Out</a>').show();
|
||||||
DOM.bind(authorization).signout.click(function() {
|
DOM.bind(authorization).signout.click(function() {
|
||||||
@ -50,7 +50,7 @@ FreebaseLoadingDialog.prototype._createDialog = function() {
|
|||||||
"guid": null
|
"guid": null
|
||||||
}];
|
}];
|
||||||
|
|
||||||
$.post("/command/freebase-extension/mqlwrite/" + provider,
|
$.post("/command/freebase/mqlwrite/" + provider,
|
||||||
{ "query" : JSON.stringify(mql_query) },
|
{ "query" : JSON.stringify(mql_query) },
|
||||||
function(data) {
|
function(data) {
|
||||||
if ("status" in data && data.code == "/api/status/ok") {
|
if ("status" in data && data.code == "/api/status/ok") {
|
||||||
@ -66,7 +66,7 @@ FreebaseLoadingDialog.prototype._createDialog = function() {
|
|||||||
|
|
||||||
var show_triples = function(cont) {
|
var show_triples = function(cont) {
|
||||||
$.post(
|
$.post(
|
||||||
"/command/freebase-extension/preview-protograph?" + $.param({ project: theProject.id }),
|
"/command/freebase/preview-protograph?" + $.param({ project: theProject.id }),
|
||||||
{
|
{
|
||||||
protograph: JSON.stringify(theProject.overlayModels.freebaseProtograph || {}),
|
protograph: JSON.stringify(theProject.overlayModels.freebaseProtograph || {}),
|
||||||
engine: JSON.stringify(ui.browsingEngine.getJSON())
|
engine: JSON.stringify(ui.browsingEngine.getJSON())
|
||||||
@ -143,7 +143,7 @@ FreebaseLoadingDialog.prototype._load = function() {
|
|||||||
var doLoad = function() {
|
var doLoad = function() {
|
||||||
var dismissBusy = DialogSystem.showBusy();
|
var dismissBusy = DialogSystem.showBusy();
|
||||||
|
|
||||||
$.post("/command/freebase-extension/upload-data",
|
$.post("/command/freebase/upload-data",
|
||||||
{
|
{
|
||||||
project: theProject.id,
|
project: theProject.id,
|
||||||
"qa" : qa,
|
"qa" : qa,
|
||||||
|
@ -170,7 +170,7 @@ SchemaAlignmentDialog.prototype._constructFooter = function(footer) {
|
|||||||
var protograph = self.getJSON();
|
var protograph = self.getJSON();
|
||||||
|
|
||||||
Refine.postProcess(
|
Refine.postProcess(
|
||||||
"freebase-extension",
|
"freebase",
|
||||||
"save-protograph",
|
"save-protograph",
|
||||||
{},
|
{},
|
||||||
{ protograph: JSON.stringify(protograph) },
|
{ protograph: JSON.stringify(protograph) },
|
||||||
@ -264,7 +264,7 @@ SchemaAlignmentDialog.prototype.preview = function() {
|
|||||||
|
|
||||||
var protograph = this.getJSON();
|
var protograph = this.getJSON();
|
||||||
$.post(
|
$.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()) },
|
{ protograph: JSON.stringify(protograph), engine: JSON.stringify(ui.browsingEngine.getJSON()) },
|
||||||
function(data) {
|
function(data) {
|
||||||
if ("mqllike" in data) {
|
if ("mqllike" in data) {
|
||||||
|
@ -36,12 +36,12 @@ public class SaveProtographOperation extends AbstractOperation {
|
|||||||
|
|
||||||
writer.object();
|
writer.object();
|
||||||
writer.key("op"); writer.value(OperationRegistry.s_opClassToName.get(this.getClass()));
|
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.key("protograph"); _protograph.write(writer, options);
|
||||||
writer.endObject();
|
writer.endObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String getBriefDescription() {
|
protected String getBriefDescription(Project project) {
|
||||||
return "Save schema alignment skeleton";
|
return "Save schema alignment skeleton";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,7 +49,7 @@ public class SaveProtographOperation extends AbstractOperation {
|
|||||||
protected HistoryEntry createHistoryEntry(Project project, long historyEntryID) throws Exception {
|
protected HistoryEntry createHistoryEntry(Project project, long historyEntryID) throws Exception {
|
||||||
Change change = new ProtographChange(_protograph);
|
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 {
|
static public class ProtographChange implements Change {
|
||||||
|
@ -195,7 +195,7 @@ public class TripleLoaderTransposedNodeFactory implements TransposedNodeFactory
|
|||||||
sb.append("{ \"s\" : \""); sb.append(subject); sb.append('"');
|
sb.append("{ \"s\" : \""); sb.append(subject); sb.append('"');
|
||||||
sb.append(", \"p\" : \""); sb.append(predicate); sb.append('"');
|
sb.append(", \"p\" : \""); sb.append(predicate); sb.append('"');
|
||||||
sb.append(", \"o\" : "); sb.append(s);
|
sb.append(", \"o\" : "); sb.append(s);
|
||||||
sb.append(", \"lang\" : "); sb.append(lang);
|
sb.append(", \"lang\" : \""); sb.append(lang); sb.append('"');
|
||||||
|
|
||||||
if (subjectCell != null) {
|
if (subjectCell != null) {
|
||||||
sb.append(", \"meta\" : { ");
|
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) {
|
public Object internalWrite(String subject, String predicate, Project project, int subjectRowIndex, int subjectCellIndex, Cell subjectCell) {
|
||||||
|
Object value = cell.value;
|
||||||
|
if (value != null) {
|
||||||
|
if ("/type/text".equals(node.valueType)) {
|
||||||
|
value = value.toString();
|
||||||
if (subject != null) {
|
if (subject != null) {
|
||||||
if ("/type/text".equals(node.lang)) {
|
writeLine(subject, predicate, value, node.lang, project,
|
||||||
writeLine(subject, predicate, cell.value, node.lang, project,
|
|
||||||
subjectRowIndex, subjectCellIndex, subjectCell, !load);
|
subjectRowIndex, subjectCellIndex, subjectCell, !load);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
writeLine(subject, predicate, cell.value, project,
|
value = validateValue(value, node.valueType);
|
||||||
|
if (subject != null && value != null) {
|
||||||
|
writeLine(subject, predicate, value, project,
|
||||||
subjectRowIndex, subjectCellIndex, subjectCell,
|
subjectRowIndex, subjectCellIndex, subjectCell,
|
||||||
-1, -1, null, !load);
|
-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) {
|
public Object internalWrite(String subject, String predicate, Project project, int subjectRowIndex, int subjectCellIndex, Cell subjectCell) {
|
||||||
if ("/type/text".equals(node.lang)) {
|
Object value = node.value;
|
||||||
writeLine(subject, predicate, node.value, node.lang, project,
|
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);
|
subjectRowIndex, subjectCellIndex, subjectCell, !load);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
writeLine(subject, predicate, node.value, project,
|
value = validateValue(value, node.valueType);
|
||||||
|
if (subject != null && value != null) {
|
||||||
|
writeLine(subject, predicate, value, project,
|
||||||
subjectRowIndex, subjectCellIndex, subjectCell,
|
subjectRowIndex, subjectCellIndex, subjectCell,
|
||||||
-1, -1, null, !load);
|
-1, -1, null, !load);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return node.value;
|
}
|
||||||
|
return value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -722,4 +737,48 @@ public class TripleLoaderTransposedNodeFactory implements TransposedNodeFactory
|
|||||||
writeLine(sb.toString());
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user