use of org.openrefine.wikidata.schema.WikibaseSchema in project OpenRefine by OpenRefine.
the class PreviewWikibaseSchemaCommand method doPost.
/**
* This command uses POST but is left CSRF-unprotected since it does not
* incur a side effect or state change in the backend.
* The reason why it uses POST is to make sure large schemas and engines
* can be passed as parameters.
*/
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
Project project = getProject(request);
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Type", "application/json");
String schemaJson = request.getParameter("schema");
WikibaseSchema schema = null;
if (schemaJson != null) {
try {
schema = WikibaseSchema.reconstruct(schemaJson);
} catch (IOException e) {
respondError(response, "Wikibase schema could not be parsed. Error message: " + e.getMessage());
return;
}
} else {
schema = (WikibaseSchema) project.overlayModels.get("wikibaseSchema");
}
if (schema == null) {
respondError(response, "No Wikibase schema provided.");
return;
}
Manifest manifest = null;
String manifestJson = request.getParameter("manifest");
if (manifestJson != null) {
try {
manifest = ManifestParser.parse(manifestJson);
} catch (ManifestException e) {
respondError(response, "Wikibase manifest could not be parsed. Error message: " + e.getMessage());
return;
}
}
if (manifest == null) {
respondError(response, "No Wikibase manifest provided.");
return;
}
QAWarningStore warningStore = new QAWarningStore();
// Evaluate project
Engine engine = getEngine(request, project);
List<TermedStatementEntityEdit> editBatch = schema.evaluate(project, engine, warningStore);
// Inspect the edits and generate warnings
EditInspector inspector = new EditInspector(warningStore, manifest);
inspector.inspect(editBatch, schema);
// Dump the first 10 edits, scheduled with the default scheduler
WikibaseAPIUpdateScheduler scheduler = new WikibaseAPIUpdateScheduler();
List<TermedStatementEntityEdit> nonNullEdits = scheduler.schedule(editBatch).stream().filter(e -> !e.isNull()).collect(Collectors.toList());
List<TermedStatementEntityEdit> firstEdits = nonNullEdits.stream().limit(10).collect(Collectors.toList());
PreviewResults previewResults = new PreviewResults(warningStore.getWarnings(), warningStore.getMaxSeverity(), warningStore.getNbWarnings(), nonNullEdits.size(), firstEdits);
respondJSON(response, previewResults);
} catch (Exception e) {
respondException(response, e);
}
}
use of org.openrefine.wikidata.schema.WikibaseSchema in project OpenRefine by OpenRefine.
the class QuickStatementsExporterTest method testSimpleProject.
@Test
public void testSimpleProject() throws IOException {
Project project = this.createCSVProject(TestingData.inceptionWithNewCsv);
TestingData.reconcileInceptionCells(project);
String serialized = TestingData.jsonFromFile("schema/inception.json");
WikibaseSchema schema = WikibaseSchema.reconstruct(serialized);
project.overlayModels.put("wikibaseSchema", schema);
Engine engine = new Engine(project);
StringWriter writer = new StringWriter();
Properties properties = new Properties();
exporter.export(project, properties, engine, writer);
assertEquals(TestingData.inceptionWithNewQS, writer.toString());
}
use of org.openrefine.wikidata.schema.WikibaseSchema in project OpenRefine by OpenRefine.
the class SchemaPropertyExtractorTest method testNoProperties.
@Test
public void testNoProperties() {
schema = new WikibaseSchema();
SchemaPropertyExtractor extractor = new SchemaPropertyExtractor();
Set<PropertyIdValue> propertyIdValues = extractor.getAllProperties(schema);
Assert.assertEquals(propertyIdValues, new HashSet<>());
}
use of org.openrefine.wikidata.schema.WikibaseSchema in project OpenRefine by OpenRefine.
the class SaveWikibaseSchemaOperationTest method testLoadChange.
@Test
public void testLoadChange() throws Exception {
String schemaJson = TestingData.jsonFromFile("schema/inception.json");
String changeString = "newSchema=" + schemaJson + "\n" + "oldSchema=\n" + "/ec/";
WikibaseSchema schema = WikibaseSchema.reconstruct(schemaJson);
LineNumberReader reader = makeReader(changeString);
Change change = SaveWikibaseSchemaOperation.WikibaseSchemaChange.load(reader, pool);
change.apply(project);
assertEquals(schema, project.overlayModels.get(SaveWikibaseSchemaOperation.WikibaseSchemaChange.overlayModelKey));
change.revert(project);
assertNull(project.overlayModels.get(SaveWikibaseSchemaOperation.WikibaseSchemaChange.overlayModelKey));
// not checking for equality because JSON serialization varies
saveChange(change);
}
use of org.openrefine.wikidata.schema.WikibaseSchema in project OpenRefine by OpenRefine.
the class SchemaExporter method export.
@Override
public void export(Project project, Properties options, Engine engine, Writer writer) throws IOException {
WikibaseSchema schema = (WikibaseSchema) project.overlayModels.get("wikibaseSchema");
if (schema == null) {
schema = new WikibaseSchema();
}
ParsingUtilities.mapper.writeValue(writer, schema);
}
Aggregations