Built synthetic FAIR guidelines that needed to get through rules of the data archives guidelines.
This commit is contained in:
parent
101421094b
commit
674a8ca833
|
@ -16,7 +16,7 @@ public final class StandardResult implements Guideline.Result {
|
||||||
private final Status status;
|
private final Status status;
|
||||||
private final int score;
|
private final int score;
|
||||||
|
|
||||||
private StandardResult(int score, Status status, List<String> warnings, List<String> errors, String internalError) {
|
public StandardResult(int score, Status status, List<String> warnings, List<String> errors, String internalError) {
|
||||||
this.status = status;
|
this.status = status;
|
||||||
this.score = score;
|
this.score = score;
|
||||||
this.warnings = warnings;
|
this.warnings = warnings;
|
||||||
|
|
|
@ -88,7 +88,7 @@ public final class F2_01M extends AbstractOpenAireProfile {
|
||||||
private static final int MAX_SCORE = GUIDELINES.stream().map(Guideline::getWeight).reduce(0, Integer::sum);
|
private static final int MAX_SCORE = GUIDELINES.stream().map(Guideline::getWeight).reduce(0, Integer::sum);
|
||||||
|
|
||||||
public F2_01M() {
|
public F2_01M() {
|
||||||
super("F2_01M Guideline for the OpenAIRE FAIR Guidelines for Data Repositories Profile v4");
|
super("Rich metadata is provided to allow discovery");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -53,7 +53,7 @@ public final class F3_01M extends AbstractOpenAireProfile {
|
||||||
private static final int MAX_SCORE = GUIDELINES.stream().map(Guideline::getWeight).reduce(0, Integer::sum);
|
private static final int MAX_SCORE = GUIDELINES.stream().map(Guideline::getWeight).reduce(0, Integer::sum);
|
||||||
|
|
||||||
public F3_01M() {
|
public F3_01M() {
|
||||||
super("F3_01M Guideline for the OpenAIRE FAIR Guidelines for Data Repositories Profile v4");
|
super("Metadata includes the identifier for the data");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package eu.dnetlib.validator2.validation.guideline.openaire;
|
package eu.dnetlib.validator2.validation.guideline.openaire;
|
||||||
|
|
||||||
|
//import com.google.gson.Gson;
|
||||||
import eu.dnetlib.validator2.engine.Status;
|
import eu.dnetlib.validator2.engine.Status;
|
||||||
import eu.dnetlib.validator2.validation.XMLApplicationProfile;
|
import eu.dnetlib.validator2.validation.XMLApplicationProfile;
|
||||||
import eu.dnetlib.validator2.validation.guideline.*;
|
import eu.dnetlib.validator2.validation.guideline.*;
|
||||||
|
@ -9,8 +10,7 @@ import org.w3c.dom.Document;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static eu.dnetlib.validator2.validation.guideline.Cardinality.ONE;
|
import static eu.dnetlib.validator2.validation.guideline.Cardinality.*;
|
||||||
import static eu.dnetlib.validator2.validation.guideline.Cardinality.ONE_TO_N;
|
|
||||||
|
|
||||||
public final class FAIR_Data_GuidelinesProfile extends AbstractOpenAireProfile {
|
public final class FAIR_Data_GuidelinesProfile extends AbstractOpenAireProfile {
|
||||||
|
|
||||||
|
@ -289,80 +289,80 @@ public final class FAIR_Data_GuidelinesProfile extends AbstractOpenAireProfile {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO this goes to FAIRProfile
|
//// TODO this goes to FAIRProfile
|
||||||
class MetadataCompleteness extends AbstractGuideline<Document> {
|
//class MetadataCompleteness extends AbstractGuideline<Document> {
|
||||||
|
//
|
||||||
public MetadataCompleteness() {
|
// public MetadataCompleteness() {
|
||||||
super("MetadataCompleteness", 40);
|
// super("MetadataCompleteness", 40);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public Result validate(String id, Document t) {
|
// public Result validate(String id, Document t) {
|
||||||
DataArchiveGuidelinesV2Profile profile = new DataArchiveGuidelinesV2Profile();
|
// DataArchiveGuidelinesV2Profile profile = new DataArchiveGuidelinesV2Profile();
|
||||||
|
//
|
||||||
// <></>ODO: iterate over results and build one Guideline.Result
|
// // <></>ODO: iterate over results and build one Guideline.Result
|
||||||
try {
|
// try {
|
||||||
// System.out.println("Processing MetadataCompleteness...");
|
//// System.out.println("Processing MetadataCompleteness...");
|
||||||
XMLApplicationProfile.ValidationResult res = profile.validate(id, t);
|
// XMLApplicationProfile.ValidationResult res = profile.validate(id, t);
|
||||||
Map<String, Result> results = res.results();
|
// Map<String, Result> results = res.results();
|
||||||
int MaxScoreMetadataCompleteness = (int) ((res.score()*getWeight())/100);
|
// int MaxScoreMetadataCompleteness = (int) ((res.score()*getWeight())/100);
|
||||||
|
//
|
||||||
// System.out.println("Max score DataValidator(%): " + res.score());
|
//// System.out.println("Max score DataValidator(%): " + res.score());
|
||||||
// System.out.println("Weight FAIRG: " + getWeight());
|
//// System.out.println("Weight FAIRG: " + getWeight());
|
||||||
// System.out.println("Max score MetadataCompleteness: " + MaxScoreMetadataCompleteness);
|
//// System.out.println("Max score MetadataCompleteness: " + MaxScoreMetadataCompleteness);
|
||||||
// System.out.println("\n\n\n\n");
|
//// System.out.println("\n\n\n\n");
|
||||||
|
//
|
||||||
// for (Map.Entry entry : results.entrySet()) {
|
//// for (Map.Entry entry : results.entrySet()) {
|
||||||
// System.out.println(entry.getKey() + " = " + entry.getValue());
|
//// System.out.println(entry.getKey() + " = " + entry.getValue());
|
||||||
|
//// }
|
||||||
|
//// System.out.println(score);
|
||||||
|
// return getResult(MaxScoreMetadataCompleteness);
|
||||||
|
//
|
||||||
|
//// System.out.println(tempp.status() + " - " + tempp.score());
|
||||||
|
//// String printout = results.entrySet().stream().
|
||||||
|
//// map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n"));
|
||||||
|
//// System.out.println(printout);
|
||||||
|
//
|
||||||
|
//// System.out.println("\n\n\n\n");
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// System.out.println(e.getMessage());
|
||||||
|
// System.out.println(e);
|
||||||
|
// e.printStackTrace();
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// private static Result getResult(int score) {
|
||||||
|
// String aa;
|
||||||
|
// aa = (score > 0) ? "SUCCESS" : "FAILURE";
|
||||||
|
// return new Result() {
|
||||||
|
// @Override
|
||||||
|
// public int score() {
|
||||||
|
// return score;
|
||||||
// }
|
// }
|
||||||
// System.out.println(score);
|
//
|
||||||
return getResult(MaxScoreMetadataCompleteness);
|
// @Override
|
||||||
|
// public Status status() {
|
||||||
// System.out.println(tempp.status() + " - " + tempp.score());
|
//// return null;
|
||||||
// String printout = results.entrySet().stream().
|
// return Status.valueOf(aa);
|
||||||
// map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n"));
|
// }
|
||||||
// System.out.println(printout);
|
//
|
||||||
|
// @Override
|
||||||
// System.out.println("\n\n\n\n");
|
// public Iterable<String> warnings() { return null; }
|
||||||
} catch (Exception e) {
|
//
|
||||||
System.out.println(e.getMessage());
|
// @Override
|
||||||
System.out.println(e);
|
// public Iterable<String> errors() {
|
||||||
e.printStackTrace();
|
// return null;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
return null;
|
// @Override
|
||||||
}
|
// public String internalError() {
|
||||||
|
// return null;
|
||||||
private static Result getResult(int score) {
|
// }
|
||||||
String aa;
|
// };
|
||||||
aa = (score > 0) ? "SUCCESS" : "FAILURE";
|
// }
|
||||||
return new Result() {
|
//}
|
||||||
@Override
|
|
||||||
public int score() {
|
|
||||||
return score;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Status status() {
|
|
||||||
// return null;
|
|
||||||
return Status.valueOf(aa);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Iterable<String> warnings() { return null; }
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Iterable<String> errors() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String internalError() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class F2_01M_SPEC extends AbstractGuideline<Document> {
|
class F2_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
|
|
||||||
|
@ -374,39 +374,47 @@ class F2_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
public Result validate(String id, Document t) {
|
public Result validate(String id, Document t) {
|
||||||
F2_01M profile = new F2_01M();
|
F2_01M profile = new F2_01M();
|
||||||
|
|
||||||
// <></>ODO: iterate over results and build one Guideline.Result
|
// TODO: iterate over results and build one Guideline.Result
|
||||||
try {
|
try {
|
||||||
System.out.println("\nRich metadata is provided to allow discovery");
|
|
||||||
XMLApplicationProfile.ValidationResult res_F = profile.validate(id, t);
|
XMLApplicationProfile.ValidationResult res_F = profile.validate(id, t);
|
||||||
Map<String, Result> results = res_F.results();
|
|
||||||
int MaxScoreF2_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
|
// Get actual score and not (%) to incorporate to FAIR score
|
||||||
|
final int MaxScoreF2_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
|
||||||
|
|
||||||
// System.out.println("Max score DataValidator(%): " + res_F.score());
|
// System.out.println("Max score DataValidator(%): " + res_F.score());
|
||||||
// System.out.println("Weight FAIRG: " + getWeight());
|
// System.out.println("Weight FAIRG: " + getWeight());
|
||||||
// System.out.println("Max score F2_01M_SPEC: " + MaxScoreF2_01M_SPEC);
|
// System.out.println("Max score F2_01M_SPEC: " + MaxScoreF2_01M_SPEC);
|
||||||
|
|
||||||
// System.out.println("\n\n\n\n");
|
ArrayList<String> warnings2 = new ArrayList<>();
|
||||||
for (Map.Entry entry : results.entrySet()) {
|
ArrayList<String> errors2 = new ArrayList<>();
|
||||||
System.out.println(entry.getKey() + " = " + entry.getValue());
|
int score = 0;
|
||||||
|
for (Map.Entry entry : res_F.results().entrySet()) {
|
||||||
|
if (res_F.results().get(entry.getKey()).warnings().toString().length() > 2) {
|
||||||
|
warnings2.add(res_F.results().get(entry.getKey()).warnings().toString());
|
||||||
|
}
|
||||||
|
if (res_F.results().get(entry.getKey()).errors().toString().length() > 2) {
|
||||||
|
errors2.add(res_F.results().get(entry.getKey()).errors().toString());
|
||||||
|
}
|
||||||
|
if (entry.getValue().toString().contains("SUCCESS")) {
|
||||||
|
score += 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return getResult(MaxScoreF2_01M_SPEC);
|
|
||||||
|
|
||||||
// System.out.println(tempp.status() + " - " + tempp.score());
|
final Result ress = getResult(warnings2, errors2, score);
|
||||||
// String printout = results.entrySet().stream().
|
|
||||||
// map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n"));
|
return new StandardResult(ress.score(), ress.status(), (List<String>) ress.warnings(), (List<String>) ress.errors(), ress.internalError());
|
||||||
// System.out.println(printout);
|
|
||||||
// System.out.println("\n\n\n\n");
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println(e.getMessage());
|
System.out.println(e.getMessage());
|
||||||
System.out.println(e);
|
System.out.println(e);
|
||||||
e.printStackTrace();}
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
return null;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Result getResult(int score) {
|
|
||||||
String aa;
|
private static Result getResult(ArrayList<String> warnings2, ArrayList<String> errors2, int score) {
|
||||||
aa = (score > 0) ? "SUCCESS" : "FAILURE";
|
|
||||||
return new Result() {
|
return new Result() {
|
||||||
@Override
|
@Override
|
||||||
public int score() {
|
public int score() {
|
||||||
|
@ -415,18 +423,17 @@ class F2_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Status status() {
|
public Status status() {
|
||||||
// return null;
|
return Status.valueOf((score > 0) ? "SUCCESS" : "FAILURE");
|
||||||
return Status.valueOf(aa);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<String> warnings() {
|
public Iterable<String> warnings() {
|
||||||
return null;
|
return warnings2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<String> errors() {
|
public Iterable<String> errors() {
|
||||||
return null;
|
return errors2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -445,9 +452,9 @@ class F3_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
public Result validate(String id, Document t) {
|
public Result validate(String id, Document t) {
|
||||||
F3_01M profile = new F3_01M();
|
F3_01M profile = new F3_01M();
|
||||||
|
|
||||||
// <></>ODO: iterate over results and build one Guideline.Result
|
// TODO: iterate over results and build one Guideline.Result
|
||||||
try {
|
try {
|
||||||
System.out.println("\nMetadata includes the identifier for the data");
|
// System.out.println("\nMetadata includes the identifier for the data");
|
||||||
XMLApplicationProfile.ValidationResult res_F = profile.validate(id, t);
|
XMLApplicationProfile.ValidationResult res_F = profile.validate(id, t);
|
||||||
Map<String, Result> results = res_F.results();
|
Map<String, Result> results = res_F.results();
|
||||||
// int MaxScoreF3_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
|
// int MaxScoreF3_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
|
||||||
|
@ -460,32 +467,30 @@ class F3_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
MaxScoreF3_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
|
MaxScoreF3_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
|
||||||
}
|
}
|
||||||
|
|
||||||
// System.out.println("% score DataValidator: " + res_F.score());
|
ArrayList<String> warnings2 = new ArrayList<>();
|
||||||
// System.out.println("Weight FAIRG: " + getWeight());
|
ArrayList<String> errors2 = new ArrayList<>();
|
||||||
// System.out.println("Max score F3_01M_SPEC: " + MaxScoreF3_01M_SPEC);
|
for (Map.Entry entry : res_F.results().entrySet()) {
|
||||||
|
if (res_F.results().get(entry.getKey()).warnings().toString().length() > 2) {
|
||||||
// System.out.println("\n\n\n\n");
|
warnings2.add(res_F.results().get(entry.getKey()).warnings().toString());
|
||||||
for (Map.Entry entry : results.entrySet()) {
|
}
|
||||||
System.out.println(entry.getKey() + " = " + entry.getValue());
|
if (res_F.results().get(entry.getKey()).errors().toString().length() > 2) {
|
||||||
|
errors2.add(res_F.results().get(entry.getKey()).errors().toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return getResult(MaxScoreF3_01M_SPEC);
|
|
||||||
|
|
||||||
// System.out.println(tempp.status() + " - " + tempp.score());
|
final Result ress = getResult(warnings2, errors2, MaxScoreF3_01M_SPEC);
|
||||||
// String printout = results.entrySet().stream().
|
|
||||||
// map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n"));
|
return new StandardResult(ress.score(), ress.status(), (List<String>) ress.warnings(), (List<String>) ress.errors(), ress.internalError());
|
||||||
// System.out.println(printout);
|
|
||||||
// System.out.println("\n\n\n\n");
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println(e.getMessage());
|
System.out.println(e.getMessage());
|
||||||
System.out.println(e);
|
System.out.println(e);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
private static Result getResult(ArrayList<String> warnings2, ArrayList<String> errors2, int score) {
|
||||||
|
|
||||||
private static Result getResult(int score) {
|
|
||||||
String aa;
|
|
||||||
aa = (score > 0) ? "SUCCESS" : "FAILURE";
|
|
||||||
return new Result() {
|
return new Result() {
|
||||||
@Override
|
@Override
|
||||||
public int score() {
|
public int score() {
|
||||||
|
@ -494,18 +499,17 @@ class F3_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Status status() {
|
public Status status() {
|
||||||
// return null;
|
return Status.valueOf((score > 0) ? "SUCCESS" : "FAILURE");
|
||||||
return Status.valueOf(aa);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<String> warnings() {
|
public Iterable<String> warnings() {
|
||||||
return null;
|
return warnings2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<String> errors() {
|
public Iterable<String> errors() {
|
||||||
return null;
|
return errors2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -524,9 +528,9 @@ class I2_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
public Result validate(String id, Document t) {
|
public Result validate(String id, Document t) {
|
||||||
I2_01M profile = new I2_01M();
|
I2_01M profile = new I2_01M();
|
||||||
|
|
||||||
// <></>ODO: iterate over results and build one Guideline.Result
|
// TODO: iterate over results and build one Guideline.Result
|
||||||
try {
|
try {
|
||||||
System.out.println("\nMetadata uses FAIR-compliant vocabularies");
|
// System.out.println("\nMetadata uses FAIR-compliant vocabularies");
|
||||||
XMLApplicationProfile.ValidationResult res_F = profile.validate(id, t);
|
XMLApplicationProfile.ValidationResult res_F = profile.validate(id, t);
|
||||||
Map<String, Result> results = res_F.results();
|
Map<String, Result> results = res_F.results();
|
||||||
// int MaxScoreI2_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
|
// int MaxScoreI2_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
|
||||||
|
@ -539,21 +543,21 @@ class I2_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
MaxScoreI2_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
|
MaxScoreI2_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
|
||||||
}
|
}
|
||||||
|
|
||||||
// System.out.println("% score DataValidator: " + res_F.score());
|
ArrayList<String> warnings2 = new ArrayList<>();
|
||||||
// System.out.println("Weight FAIRG: " + getWeight());
|
ArrayList<String> errors2 = new ArrayList<>();
|
||||||
// System.out.println("Max score I2_01M_SPEC: " + MaxScoreI2_01M_SPEC);
|
for (Map.Entry entry : res_F.results().entrySet()) {
|
||||||
|
if (res_F.results().get(entry.getKey()).warnings().toString().length() > 2) {
|
||||||
// System.out.println("\n\n\n\n");
|
warnings2.add(res_F.results().get(entry.getKey()).warnings().toString());
|
||||||
for (Map.Entry entry : results.entrySet()) {
|
}
|
||||||
System.out.println(entry.getKey() + " = " + entry.getValue());
|
if (res_F.results().get(entry.getKey()).errors().toString().length() > 2) {
|
||||||
|
errors2.add(res_F.results().get(entry.getKey()).errors().toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return getResult(MaxScoreI2_01M_SPEC);
|
|
||||||
|
|
||||||
// System.out.println(tempp.status() + " - " + tempp.score());
|
final Result ress = getResult(warnings2, errors2, MaxScoreI2_01M_SPEC);
|
||||||
// String printout = results.entrySet().stream().
|
|
||||||
// map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n"));
|
return new StandardResult(ress.score(), ress.status(), (List<String>) ress.warnings(), (List<String>) ress.errors(), ress.internalError());
|
||||||
// System.out.println(printout);
|
|
||||||
// System.out.println("\n\n\n\n");
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println(e.getMessage());
|
System.out.println(e.getMessage());
|
||||||
System.out.println(e);
|
System.out.println(e);
|
||||||
|
@ -562,9 +566,8 @@ class I2_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Result getResult(int score) {
|
private static Result getResult(ArrayList<String> warnings2, ArrayList<String> errors2, int score) {
|
||||||
String aa;
|
|
||||||
aa = (score > 0) ? "SUCCESS" : "FAILURE";
|
|
||||||
return new Result() {
|
return new Result() {
|
||||||
@Override
|
@Override
|
||||||
public int score() {
|
public int score() {
|
||||||
|
@ -573,18 +576,17 @@ class I2_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Status status() {
|
public Status status() {
|
||||||
return null;
|
return Status.valueOf((score > 0) ? "SUCCESS" : "FAILURE");
|
||||||
// return Status.valueOf(aa);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<String> warnings() {
|
public Iterable<String> warnings() {
|
||||||
return null;
|
return warnings2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<String> errors() {
|
public Iterable<String> errors() {
|
||||||
return null;
|
return errors2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -603,28 +605,32 @@ class R1_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
public Result validate(String id, Document t) {
|
public Result validate(String id, Document t) {
|
||||||
R1_01M profile = new R1_01M();
|
R1_01M profile = new R1_01M();
|
||||||
|
|
||||||
// <></>ODO: iterate over results and build one Guideline.Result
|
// TODO: iterate over results and build one Guideline.Result
|
||||||
try {
|
try {
|
||||||
System.out.println("\nPlurality of accurate and relevant attributes are provided to allow reuse");
|
// System.out.println("\nPlurality of accurate and relevant attributes are provided to allow reuse");
|
||||||
XMLApplicationProfile.ValidationResult res_F = profile.validate(id, t);
|
XMLApplicationProfile.ValidationResult res_F = profile.validate(id, t);
|
||||||
Map<String, Result> results = res_F.results();
|
Map<String, Result> results = res_F.results();
|
||||||
int MaxScoreR1_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
|
int MaxScoreR1_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
|
||||||
|
|
||||||
// System.out.println("% score DataValidator: " + res_F.score());
|
ArrayList<String> warnings2 = new ArrayList<>();
|
||||||
// System.out.println("Weight FAIRG: " + getWeight());
|
ArrayList<String> errors2 = new ArrayList<>();
|
||||||
// System.out.println("Max score R1_01M_SPEC: " + MaxScoreR1_01M_SPEC);
|
int score = 0;
|
||||||
|
for (Map.Entry entry : res_F.results().entrySet()) {
|
||||||
// System.out.println("\n\n\n\n");
|
if (res_F.results().get(entry.getKey()).warnings().toString().length() > 2) {
|
||||||
for (Map.Entry entry : results.entrySet()) {
|
warnings2.add(res_F.results().get(entry.getKey()).warnings().toString());
|
||||||
System.out.println(entry.getKey() + " = " + entry.getValue());
|
}
|
||||||
|
if (res_F.results().get(entry.getKey()).errors().toString().length() > 2) {
|
||||||
|
errors2.add(res_F.results().get(entry.getKey()).errors().toString());
|
||||||
|
}
|
||||||
|
if (entry.getValue().toString().contains("SUCCESS")) {
|
||||||
|
score += 3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return getResult(MaxScoreR1_01M_SPEC);
|
|
||||||
|
|
||||||
// System.out.println(tempp.status() + " - " + tempp.score());
|
final Result ress = getResult(warnings2, errors2, score);
|
||||||
// String printout = results.entrySet().stream().
|
|
||||||
// map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n"));
|
return new StandardResult(ress.score(), ress.status(), (List<String>) ress.warnings(), (List<String>) ress.errors(), ress.internalError());
|
||||||
// System.out.println(printout);
|
|
||||||
// System.out.println("\n\n\n\n");
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println(e.getMessage());
|
System.out.println(e.getMessage());
|
||||||
System.out.println(e);
|
System.out.println(e);
|
||||||
|
@ -633,8 +639,8 @@ class R1_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Result getResult(int score) {
|
private static Result getResult(ArrayList<String> warnings2, ArrayList<String> errors2, int score) {
|
||||||
String aa = (score > 0) ? "SUCCESS" : "FAILURE";
|
|
||||||
return new Result() {
|
return new Result() {
|
||||||
@Override
|
@Override
|
||||||
public int score() {
|
public int score() {
|
||||||
|
@ -643,18 +649,17 @@ class R1_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Status status() {
|
public Status status() {
|
||||||
return null;
|
return Status.valueOf((score > 0) ? "SUCCESS" : "FAILURE");
|
||||||
// return Status.valueOf(aa);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<String> warnings() {
|
public Iterable<String> warnings() {
|
||||||
return null;
|
return warnings2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<String> errors() {
|
public Iterable<String> errors() {
|
||||||
return null;
|
return errors2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -673,28 +678,33 @@ class R1_2_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
public Result validate(String id, Document t) {
|
public Result validate(String id, Document t) {
|
||||||
R1_2_01M profile = new R1_2_01M();
|
R1_2_01M profile = new R1_2_01M();
|
||||||
|
|
||||||
// <></>ODO: iterate over results and build one Guideline.Result
|
// TODO: iterate over results and build one Guideline.Result
|
||||||
try {
|
try {
|
||||||
System.out.println("\nMetadata includes provenance information according to a cross-community language");
|
// System.out.println("\nMetadata includes provenance information according to a cross-community language");
|
||||||
XMLApplicationProfile.ValidationResult res_F = profile.validate(id, t);
|
XMLApplicationProfile.ValidationResult res_F = profile.validate(id, t);
|
||||||
Map<String, Result> results = res_F.results();
|
Map<String, Result> results = res_F.results();
|
||||||
int MaxScoreR1_2_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
|
int MaxScoreR1_2_01M_SPEC = (int) ((res_F.score()*getWeight())/100);
|
||||||
|
|
||||||
// System.out.println("% score DataValidator: " + res_F.score());
|
|
||||||
// System.out.println("Weight FAIRG: " + getWeight());
|
|
||||||
// System.out.println("Max score R1_2_01M_SPEC: " + MaxScoreR1_2_01M_SPEC);
|
|
||||||
|
|
||||||
// System.out.println("\n\n\n\n");
|
ArrayList<String> warnings2 = new ArrayList<>();
|
||||||
for (Map.Entry entry : results.entrySet()) {
|
ArrayList<String> errors2 = new ArrayList<>();
|
||||||
System.out.println(entry.getKey() + " = " + entry.getValue());
|
int score = 0;
|
||||||
|
for (Map.Entry entry : res_F.results().entrySet()) {
|
||||||
|
if (res_F.results().get(entry.getKey()).warnings().toString().length() > 2) {
|
||||||
|
warnings2.add(res_F.results().get(entry.getKey()).warnings().toString());
|
||||||
|
}
|
||||||
|
if (res_F.results().get(entry.getKey()).errors().toString().length() > 2) {
|
||||||
|
errors2.add(res_F.results().get(entry.getKey()).errors().toString());
|
||||||
|
}
|
||||||
|
if (entry.getValue().toString().contains("SUCCESS")) {
|
||||||
|
score += 3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return getResult(MaxScoreR1_2_01M_SPEC);
|
|
||||||
|
|
||||||
// System.out.println(tempp.status() + " - " + tempp.score());
|
final Result ress = getResult(warnings2, errors2, score);
|
||||||
// String printout = results.entrySet().stream().
|
|
||||||
// map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n"));
|
return new StandardResult(ress.score(), ress.status(), (List<String>) ress.warnings(), (List<String>) ress.errors(), ress.internalError());
|
||||||
// System.out.println(printout);
|
|
||||||
// System.out.println("\n\n\n\n");
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println(e.getMessage());
|
System.out.println(e.getMessage());
|
||||||
System.out.println(e);
|
System.out.println(e);
|
||||||
|
@ -703,9 +713,8 @@ class R1_2_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Result getResult(int score) {
|
private static Result getResult(ArrayList<String> warnings2, ArrayList<String> errors2, int score) {
|
||||||
String aa;
|
|
||||||
aa = (score > 0) ? "SUCCESS" : "FAILURE";
|
|
||||||
return new Result() {
|
return new Result() {
|
||||||
@Override
|
@Override
|
||||||
public int score() {
|
public int score() {
|
||||||
|
@ -714,18 +723,17 @@ class R1_2_01M_SPEC extends AbstractGuideline<Document> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Status status() {
|
public Status status() {
|
||||||
// return null;
|
return Status.valueOf((score > 0) ? "SUCCESS" : "FAILURE");
|
||||||
return Status.valueOf(aa);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<String> warnings() {
|
public Iterable<String> warnings() {
|
||||||
return null;
|
return warnings2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<String> errors() {
|
public Iterable<String> errors() {
|
||||||
return null;
|
return errors2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -43,7 +43,7 @@ public final class I2_01M extends AbstractOpenAireProfile {
|
||||||
private static final int MAX_SCORE = GUIDELINES.stream().map(Guideline::getWeight).reduce(0, Integer::sum);
|
private static final int MAX_SCORE = GUIDELINES.stream().map(Guideline::getWeight).reduce(0, Integer::sum);
|
||||||
|
|
||||||
public I2_01M() {
|
public I2_01M() {
|
||||||
super("I2_01M Guideline for the OpenAIRE FAIR Guidelines for Data Repositories Profile v4");
|
super("Metadata uses FAIR-compliant vocabularies");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -59,7 +59,7 @@ public final class R1_01M extends AbstractOpenAireProfile {
|
||||||
private static final int MAX_SCORE = GUIDELINES.stream().map(Guideline::getWeight).reduce(0, Integer::sum);
|
private static final int MAX_SCORE = GUIDELINES.stream().map(Guideline::getWeight).reduce(0, Integer::sum);
|
||||||
|
|
||||||
public R1_01M() {
|
public R1_01M() {
|
||||||
super("F2_01M Guideline for the OpenAIRE FAIR Guidelines for Data Repositories Profile v4");
|
super("Plurality of accurate and relevant attributes are provided to allow reuse");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -102,7 +102,7 @@ public final class R1_2_01M extends AbstractOpenAireProfile {
|
||||||
private static final int MAX_SCORE = GUIDELINES.stream().map(Guideline::getWeight).reduce(0, Integer::sum);
|
private static final int MAX_SCORE = GUIDELINES.stream().map(Guideline::getWeight).reduce(0, Integer::sum);
|
||||||
|
|
||||||
public R1_2_01M() {
|
public R1_2_01M() {
|
||||||
super("R1_2_01M Guideline for the OpenAIRE FAIR Guidelines for Data Repositories Profile v4");
|
super("Metadata includes provenance information according to a cross-community language");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -14,9 +14,9 @@ import java.util.stream.Collectors;
|
||||||
public class Test {
|
public class Test {
|
||||||
|
|
||||||
private static final String[] FILES = new String[] {
|
private static final String[] FILES = new String[] {
|
||||||
"src/test/resources/openaireguidelinesV3/dia.library.tuc.gr/Record_21811.xml",
|
// "src/test/resources/openaireguidelinesV3/dia.library.tuc.gr/Record_21811.xml",
|
||||||
"src/test/resources/openaireguidelinesV3/cris.vtt.fi/01.xml",
|
// "src/test/resources/openaireguidelinesV3/cris.vtt.fi/01.xml",
|
||||||
"src/test/resources/openaireguidelinesV3/cris.vtt.fi/02.xml",
|
// "src/test/resources/openaireguidelinesV3/cris.vtt.fi/02.xml",
|
||||||
"src/test/resources/openaireguidelinesV3/cris.vtt.fi/03.xml"
|
"src/test/resources/openaireguidelinesV3/cris.vtt.fi/03.xml"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
package eu.dnetlib.validator2.engine;
|
package eu.dnetlib.validator2.engine;
|
||||||
|
|
||||||
|
//import com.google.gson.Gson;
|
||||||
import eu.dnetlib.validator2.validation.XMLApplicationProfile;
|
import eu.dnetlib.validator2.validation.XMLApplicationProfile;
|
||||||
import eu.dnetlib.validator2.validation.guideline.Guideline;
|
import eu.dnetlib.validator2.validation.guideline.Guideline;
|
||||||
|
import eu.dnetlib.validator2.validation.guideline.StandardResult;
|
||||||
import eu.dnetlib.validator2.validation.guideline.openaire.FAIR_Data_GuidelinesProfile;
|
import eu.dnetlib.validator2.validation.guideline.openaire.FAIR_Data_GuidelinesProfile;
|
||||||
import groovy.xml.DOMBuilder;
|
import groovy.xml.DOMBuilder;
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
|
@ -30,24 +32,27 @@ public class Test_FAIR {
|
||||||
for (String file : FILES) {
|
for (String file : FILES) {
|
||||||
try {
|
try {
|
||||||
System.out.println("Processing " + file);
|
System.out.println("Processing " + file);
|
||||||
// Document doc = DOMBuilder.parse(new FileReader(file), false, true, true);
|
|
||||||
Document doc = DOMBuilder.parse(new FileReader(file), false, true, true);
|
Document doc = DOMBuilder.parse(new FileReader(file), false, true, true);
|
||||||
XMLApplicationProfile.ValidationResult result = profile.validate(file, doc);
|
XMLApplicationProfile.ValidationResult result = profile.validate(file, doc);
|
||||||
scorePerDoc.put(file, result.score());
|
scorePerDoc.put(file, result.score());
|
||||||
Map<String, Guideline.Result> results = result.results();
|
Map<String, Guideline.Result> results = result.results();
|
||||||
for (Map.Entry entry : results.entrySet()) {
|
for (Map.Entry entry : results.entrySet()) {
|
||||||
if (!entry.getValue().toString().contains("eu.dnetlib.validator2")) {
|
// System.out.println(result.results().get(entry.getKey().toString()));
|
||||||
|
// System.out.println(entry.getValue().getClass() + ": ");
|
||||||
|
//// if (!entry.getValue().toString().contains("eu.dnetlib.validator2")) {
|
||||||
System.out.println(entry.getKey() + " = " + entry.getValue());
|
System.out.println(entry.getKey() + " = " + entry.getValue());
|
||||||
}
|
//// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println(e.getMessage());
|
System.out.println(e.getMessage());
|
||||||
System.out.println(e);
|
System.out.println(e);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
System.out.println("\n\n\n\n");
|
// System.out.println("\n\n\n\n");
|
||||||
}
|
}
|
||||||
System.out.println("\n\n\n\n");
|
// System.out.println("\n\n\n\n");
|
||||||
String printout = scorePerDoc.entrySet().stream().
|
String printout = scorePerDoc.entrySet().stream().
|
||||||
map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n"));
|
map(entry -> entry.getValue() + ": " + entry.getKey()).collect(Collectors.joining("\n"));
|
||||||
System.out.println(printout);
|
System.out.println(printout);
|
||||||
|
|
Loading…
Reference in New Issue