Merge branch 'master' of code-repo.d4science.org:MaDgIK/validator-engine

This commit is contained in:
pispis 2023-08-02 14:24:30 +03:00
commit ba14a751c3
6 changed files with 247 additions and 74 deletions

View File

@ -3,20 +3,62 @@ package eu.dnetlib.validator2.validation.guideline;
public abstract class AbstractGuideline<T> implements Guideline<T> {
private final String name;
private String description;
private String link;
private String fairPrinciples;
private final int weight;
private RequirementLevel requirementLevel;
public AbstractGuideline(String name, int weight) {
this.name = name;
this.weight = weight;
}
public AbstractGuideline(String name, String description, String link, int weight, RequirementLevel requirementLevel) {
this.name = name;
this.description = description;
this.link = link;
this.weight = weight;
this.requirementLevel = requirementLevel;
}
public AbstractGuideline(String name, String description, String link, String fairPrinciples, int weight, RequirementLevel requirementLevel) {
this.name = name;
this.description = description;
this.link = link;
this.fairPrinciples = fairPrinciples;
this.weight = weight;
this.requirementLevel = requirementLevel;
}
@Override
public String getName() {
return name;
}
@Override
public String getDescription() {
return description;
}
@Override
public String getLink() {
return link;
}
@Override
public String getFairPrinciples() {
return fairPrinciples;
}
@Override
public int getWeight() {
return weight;
}
@Override
public String getName() {
return name;
public RequirementLevel getRequirementLevel() {
return requirementLevel;
}
}

View File

@ -4,9 +4,17 @@ import eu.dnetlib.validator2.engine.Status;
public interface Guideline<T> {
String getName();
String getDescription();
String getLink();
String getFairPrinciples();
int getWeight(); //that's the "score" of the guideline if it succeeds
String getName();
RequirementLevel getRequirementLevel();
default Result validate(T t) {
return validate(t == null ? "Object" : t.getClass().getSimpleName(), t);

View File

@ -14,10 +14,19 @@ public final class SyntheticGuideline extends AbstractGuideline<Document> {
private CompilationResult compilationResult;
private static final ThreadLocal<GuidelineEvaluation> evaluation = new ThreadLocal<>();
private SyntheticGuideline(String name, int weight) {
super(name, weight);
}
private SyntheticGuideline(String name, String description, String link, int weight, RequirementLevel requirementLevel) {
super(name, description, link, weight, requirementLevel);
}
private SyntheticGuideline(String name, String description, String link, String fairPrinciples, int weight, RequirementLevel requirementLevel) {
super(name, description, link, fairPrinciples, weight, requirementLevel);
}
@Override
public Result validate(String id, Document document) {
logger.debug("Validating document {} in {}", id, Thread.currentThread());
@ -83,4 +92,46 @@ public final class SyntheticGuideline extends AbstractGuideline<Document> {
guideline.compilationResult = compilationResult;
return guideline;
}
public static SyntheticGuideline of(String name, String description, String link, int weight, RequirementLevel requirementLevel, ElementSpec elementSpec) {
String canonicalName = Helper.ensureNonEmpty(name, () -> new IllegalArgumentException("Name cannot be empty"));
String canonicalDescription = Helper.ensureNonEmpty(description, () -> new IllegalArgumentException("Description cannot be empty"));
String canonicalLink = Helper.ensureNonEmpty(link, () -> new IllegalArgumentException("Link cannot be empty"));
// Here we define a guideline with a specific elementSpec as origin, we cannot allow null
if ( weight < 0 )
throw new IllegalArgumentException("Weight cannot be negative");
else if ( requirementLevel == null )
throw new IllegalArgumentException("Requirement level cannot be empty");
else if ( elementSpec == null )
throw new IllegalArgumentException("ElementSpec cannot be empty");
SyntheticGuideline guideline = new SyntheticGuideline(canonicalName, canonicalDescription, canonicalLink, weight, requirementLevel);
guideline.compilationResult = new ElementSpecCompiler().compile(elementSpec, evaluation::get);
return guideline;
}
public static SyntheticGuideline of(String name, String description, String link, String fairPrinciples, int weight, RequirementLevel requirementLevel, ElementSpec elementSpec) {
String canonicalName = Helper.ensureNonEmpty(name, () -> new IllegalArgumentException("Name cannot be empty"));
String canonicalDescription = Helper.ensureNonEmpty(description, () -> new IllegalArgumentException("Description cannot be empty"));
String canonicalLink = Helper.ensureNonEmpty(link, () -> new IllegalArgumentException("Link cannot be empty"));
String canonicalFairPrinciples = Helper.ensureNonEmpty(fairPrinciples, () -> new IllegalArgumentException("FairPrinciples cannot be empty"));
// Here we define a guideline with a specific elementSpec as origin, we cannot allow null
if ( weight < 0 )
throw new IllegalArgumentException("Weight cannot be negative");
else if ( requirementLevel == null )
throw new IllegalArgumentException("Requirement level cannot be empty");
else if ( elementSpec == null )
throw new IllegalArgumentException("ElementSpec cannot be empty");
SyntheticGuideline guideline = new SyntheticGuideline(canonicalName, canonicalDescription, canonicalLink, canonicalFairPrinciples, weight, requirementLevel);
guideline.compilationResult = new ElementSpecCompiler().compile(elementSpec, evaluation::get);
return guideline;
}
}

View File

@ -227,17 +227,36 @@ public final class FAIR_Data_GuidelinesProfile extends AbstractOpenAireProfile {
.build();
//TODO: weights for guidelines haven't been finalized. They've been given an arbitrary value of 10.
public static SyntheticGuideline F1_01D = SyntheticGuideline.of("Data is identified by a persistent identifier", 10, F1_01D_SPEC);
public static SyntheticGuideline F1_02D = SyntheticGuideline.of("Data is identified by a globally unique identifier", 10, F1_02D_SPEC);
// public static SyntheticGuideline F4_01M = SyntheticGuideline.of("F4_01M", 10, F4_01M_SPEC);
public static SyntheticGuideline A1_01M = SyntheticGuideline.of("Metadata contains information to enable the user to get access to the data", 10, A1_01M_SPEC);
// public static SyntheticGuideline A2_01M = SyntheticGuideline.of("A2_01M", 10, A2_01M_SPEC);
// public static SyntheticGuideline I1_01M = SyntheticGuideline.of("I1_01M", 10, I1_01M_SPEC);
// public static SyntheticGuideline I1_02M = SyntheticGuideline.of("I1_02M", 10, I1_02M_SPEC);
public static SyntheticGuideline I3_01M_1 = SyntheticGuideline.of("Metadata includes references to other metadata", 10, I3_01M_SPEC_1);
// public static SyntheticGuideline I3_01M_2 = SyntheticGuideline.of("I3_01M_2", 5, I3_01M_SPEC_2);
// public static SyntheticGuideline R1_01M = SyntheticGuideline.of("R1_01M", 10, R1_01M_SPEC);
public static SyntheticGuideline R1_1_01M = SyntheticGuideline.of("Metadata includes information about the licence under which the data can be reused", 10, R1_1_01M_SPEC);
public static SyntheticGuideline F1_01D = SyntheticGuideline.of("Data is identified by a persistent identifier", "description", "link",
10, RequirementLevel.MANDATORY, F1_01D_SPEC);
public static SyntheticGuideline F1_02D = SyntheticGuideline.of("Data is identified by a globally unique identifier", "description", "link",
10, RequirementLevel.MANDATORY, F1_02D_SPEC);
//public static SyntheticGuideline F4_01M = SyntheticGuideline.of("F4_01M", "description", "link",
// 10, RequirementLevel.MANDATORY, F4_01M_SPEC);
public static SyntheticGuideline A1_01M = SyntheticGuideline.of("Metadata contains information to enable the user to get access to the data", "description", "link",
10, RequirementLevel.MANDATORY, A1_01M_SPEC);
// public static SyntheticGuideline A2_01M = SyntheticGuideline.of("A2_01M", "description", "link",
// 10, RequirementLevel.MANDATORY, A2_01M_SPEC);
// public static SyntheticGuideline I1_01M = SyntheticGuideline.of("I1_01M", "description", "link",
// 10, RequirementLevel.MANDATORY, I1_01M_SPEC);
// public static SyntheticGuideline I1_02M = SyntheticGuideline.of("I1_02M", "description", "link",
// 10, RequirementLevel.MANDATORY, I1_02M_SPEC);
public static SyntheticGuideline I3_01M_1 = SyntheticGuideline.of("Metadata includes references to other metadata", "description", "link",
10, RequirementLevel.MANDATORY, I3_01M_SPEC_1);
// public static SyntheticGuideline I3_01M_2 = SyntheticGuideline.of("I3_01M_2", "description", "link",
// 5, RequirementLevel.MANDATORY, I3_01M_SPEC_2);
// public static SyntheticGuideline R1_01M = SyntheticGuideline.of("R1_01M", "description", "link",
// 10, RequirementLevel.MANDATORY, R1_01M_SPEC);
public static SyntheticGuideline R1_1_01M = SyntheticGuideline.of("Metadata includes information about the licence under which the data can be reused", "description", "link",
10, RequirementLevel.MANDATORY, R1_1_01M_SPEC);
private static final List<Guideline<Document>> GUIDELINES = Collections.unmodifiableList(
Arrays.asList(

View File

@ -217,30 +217,54 @@ public final class LiteratureGuidelinesV3Profile extends AbstractOpenAireProfile
and(new RegexValuePredicate(COMPILED_DATASET_REFERENCE_REG_EX).negate())));
}
public static final SyntheticGuideline TITLE = SyntheticGuideline.of("Title", 4, TITLE_SPEC);
public static final SyntheticGuideline CREATOR = SyntheticGuideline.of("Creator", 4, CREATOR_SPEC);
public static final SyntheticGuideline PROJECT_IDENTIFIER = SyntheticGuideline.of("Project Identifier", 5, PROJECT_IDENTIFIER_SPEC);
public static final SyntheticGuideline ACCESS_LEVEL = SyntheticGuideline.of("Access Level", 5, ACCESS_LEVEL_SPEC);
public static final SyntheticGuideline LICENSE_CONDITION = SyntheticGuideline.of("License Condition", 1, LICENSE_CONDITION_SPEC);
public static final SyntheticGuideline EMBARGO_END_DATE = SyntheticGuideline.of("Embargo End Date", 5, EMBARGO_END_DATE_SPEC);
public static final SyntheticGuideline ALTERNATIVE_IDENTIFIER = SyntheticGuideline.of("Alternative Identifier", 5, ALT_IDENTIFIER_SPEC);
public static final SyntheticGuideline PUBLICATION_REFERENCE = SyntheticGuideline.of("Publication Reference", 2, PUBLICATION_REF_SPEC);
public static final SyntheticGuideline DATASET_REFERENCE = SyntheticGuideline.of("Dataset Reference", 2, DATASET_REF_SPEC);
public static final SyntheticGuideline SUBJECT = SyntheticGuideline.of("Subject", 5, SUBJECT_SPEC);
public static final SyntheticGuideline DESCRIPTION = SyntheticGuideline.of("Description", 5, DESCRIPTION_SPEC);
public static final SyntheticGuideline PUBLISHER = SyntheticGuideline.of("Publisher", 5, PUBLISHER_SPEC);
public static final SyntheticGuideline CONTRIBUTOR = SyntheticGuideline.of("Contributor", 2, CONTRIBUTOR_SPEC);
public static final SyntheticGuideline PUBLICATION_DATE = SyntheticGuideline.of("Publication Date", 5, PUBLICATION_DATE_SPEC);
public static final SyntheticGuideline PUBLICATION_TYPE_MANDATORY = SyntheticGuideline.of("Publication Type M", 5, PUBLICATION_TYPE_M_SPEC);
public static final SyntheticGuideline PUBLICATION_TYPE_OPTIONAL = SyntheticGuideline.of("Publication Type O", 1, PUBLICATION_TYPE_O_SPEC);
public static final SyntheticGuideline PUBLICATION_VERSION = SyntheticGuideline.of("Publication Version", 2, PUBLICATION_VERSION_SPEC);
public static final SyntheticGuideline FORMAT = SyntheticGuideline.of("Format", 2, FORMAT_SPEC);
public static final SyntheticGuideline RESOURCE_IDENTIFIER = SyntheticGuideline.of("Resource Identifier", 5, RESOURCE_IDENTIFIER_SPEC);
public static final SyntheticGuideline SOURCE = SyntheticGuideline.of("Source", 5, SOURCE_SPEC);
public static final SyntheticGuideline LANGUAGE = SyntheticGuideline.of("Language", 2, LANGUAGE_SPEC);
public static final SyntheticGuideline RELATION = SyntheticGuideline.of("Relation", 1, RELATION_SPEC);
public static final SyntheticGuideline COVERAGE = SyntheticGuideline.of("Coverage", 1, COVERAGE_SPEC);
public static final SyntheticGuideline AUDIENCE = SyntheticGuideline.of("Audience", 2, AUDIENCE_SPEC);
public static final SyntheticGuideline TITLE = SyntheticGuideline.of("Title", "description", "link", "fairPrinciples",
4, RequirementLevel.MANDATORY, TITLE_SPEC);
public static final SyntheticGuideline CREATOR = SyntheticGuideline.of("Creator", "description", "link", "fairPrinciples",
4, RequirementLevel.MANDATORY, CREATOR_SPEC);
public static final SyntheticGuideline PROJECT_IDENTIFIER = SyntheticGuideline.of("Project Identifier", "description", "link", "fairPrinciples",
5, RequirementLevel.MANDATORY, PROJECT_IDENTIFIER_SPEC);
public static final SyntheticGuideline ACCESS_LEVEL = SyntheticGuideline.of("Access Level", "description", "link", "fairPrinciples",
5, RequirementLevel.MANDATORY, ACCESS_LEVEL_SPEC);
public static final SyntheticGuideline LICENSE_CONDITION = SyntheticGuideline.of("License Condition", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, LICENSE_CONDITION_SPEC);
public static final SyntheticGuideline EMBARGO_END_DATE = SyntheticGuideline.of("Embargo End Date", "description", "link", "fairPrinciples",
5, RequirementLevel.MANDATORY, EMBARGO_END_DATE_SPEC);
public static final SyntheticGuideline ALTERNATIVE_IDENTIFIER = SyntheticGuideline.of("Alternative Identifier", "description", "link", "fairPrinciples",
5, RequirementLevel.MANDATORY, ALT_IDENTIFIER_SPEC);
public static final SyntheticGuideline PUBLICATION_REFERENCE = SyntheticGuideline.of("Publication Reference", "description", "link", "fairPrinciples",
2, RequirementLevel.MANDATORY, PUBLICATION_REF_SPEC);
public static final SyntheticGuideline DATASET_REFERENCE = SyntheticGuideline.of("Dataset Reference", "description", "link", "fairPrinciples",
2, RequirementLevel.MANDATORY, DATASET_REF_SPEC);
public static final SyntheticGuideline SUBJECT = SyntheticGuideline.of("Subject", "description", "link", "fairPrinciples",
5, RequirementLevel.MANDATORY, SUBJECT_SPEC);
public static final SyntheticGuideline DESCRIPTION = SyntheticGuideline.of("Description", "description", "link", "fairPrinciples",
5, RequirementLevel.MANDATORY, DESCRIPTION_SPEC);
public static final SyntheticGuideline PUBLISHER = SyntheticGuideline.of("Publisher", "description", "link", "fairPrinciples",
5, RequirementLevel.MANDATORY, PUBLISHER_SPEC);
public static final SyntheticGuideline CONTRIBUTOR = SyntheticGuideline.of("Contributor", "description", "link", "fairPrinciples",
2, RequirementLevel.MANDATORY, CONTRIBUTOR_SPEC);
public static final SyntheticGuideline PUBLICATION_DATE = SyntheticGuideline.of("Publication Date", "description", "link", "fairPrinciples",
5, RequirementLevel.MANDATORY, PUBLICATION_DATE_SPEC);
public static final SyntheticGuideline PUBLICATION_TYPE_MANDATORY = SyntheticGuideline.of("Publication Type M", "description", "link", "fairPrinciples",
5, RequirementLevel.MANDATORY, PUBLICATION_TYPE_M_SPEC);
public static final SyntheticGuideline PUBLICATION_TYPE_OPTIONAL = SyntheticGuideline.of("Publication Type O", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, PUBLICATION_TYPE_O_SPEC);
public static final SyntheticGuideline PUBLICATION_VERSION = SyntheticGuideline.of("Publication Version", "description", "link", "fairPrinciples",
2, RequirementLevel.MANDATORY, PUBLICATION_VERSION_SPEC);
public static final SyntheticGuideline FORMAT = SyntheticGuideline.of("Format", "description", "link", "fairPrinciples",
2, RequirementLevel.MANDATORY, FORMAT_SPEC);
public static final SyntheticGuideline RESOURCE_IDENTIFIER = SyntheticGuideline.of("Resource Identifier", "description", "link", "fairPrinciples",
5, RequirementLevel.MANDATORY, RESOURCE_IDENTIFIER_SPEC);
public static final SyntheticGuideline SOURCE = SyntheticGuideline.of("Source", "link", "fairPrinciples",
5, RequirementLevel.MANDATORY, SOURCE_SPEC);
public static final SyntheticGuideline LANGUAGE = SyntheticGuideline.of("Language", "link", "fairPrinciples",
2, RequirementLevel.MANDATORY, LANGUAGE_SPEC);
public static final SyntheticGuideline RELATION = SyntheticGuideline.of("Relation", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, RELATION_SPEC);
public static final SyntheticGuideline COVERAGE = SyntheticGuideline.of("Coverage", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, COVERAGE_SPEC);
public static final SyntheticGuideline AUDIENCE = SyntheticGuideline.of("Audience", "link", "fairPrinciples",
2, RequirementLevel.MANDATORY, AUDIENCE_SPEC);
private static final List<SyntheticGuideline> GUIDELINES = Collections.unmodifiableList(
Arrays.asList(

View File

@ -3,10 +3,7 @@ package eu.dnetlib.validator2.validation.guideline.openaire;
import eu.dnetlib.validator2.engine.Rule;
import eu.dnetlib.validator2.engine.builtins.XMLCardinalityRule;
import eu.dnetlib.validator2.engine.builtins.XMLVocabularyRule;
import eu.dnetlib.validator2.validation.guideline.Builders;
import eu.dnetlib.validator2.validation.guideline.ElementSpec;
import eu.dnetlib.validator2.validation.guideline.Guideline;
import eu.dnetlib.validator2.validation.guideline.SyntheticGuideline;
import eu.dnetlib.validator2.validation.guideline.*;
import eu.dnetlib.validator2.validation.utils.ISO639ValuePredicate;
import eu.dnetlib.validator2.validation.utils.MediaTypesValuePredicate;
import eu.dnetlib.validator2.validation.utils.RegexValuePredicate;
@ -428,38 +425,70 @@ public final class LiteratureGuidelinesV4Profile extends AbstractOpenAireProfile
}
//TODO: weights for guidelines haven't been finalized. They've been given an arbitrary value of 1.
public static SyntheticGuideline TITLE = SyntheticGuideline.of("Title", 1, TITLE_SPEC);
public static SyntheticGuideline CREATOR = SyntheticGuideline.of("Creator", 1, CREATOR_SPEC);
public static SyntheticGuideline CONTRIBUTOR = SyntheticGuideline.of("Contributor", 1, CONTRIBUTOR_SPEC);
public static SyntheticGuideline FUNDING_REFERENCE = SyntheticGuideline.of("Funding Reference", 1, FUNDING_REFERENCE_SPEC);
public static SyntheticGuideline ALTERNATE_IDENTIFIER = SyntheticGuideline.of("Alternate Identifier", 1, ALTERNATE_IDENTIFIER_SPEC);
public static SyntheticGuideline RELATED_IDENTIFIER = SyntheticGuideline.of("Related Identifier", 1, RELATED_IDENTIFIER_SPEC);
public static SyntheticGuideline EMBARGO_PERIOD_DATE = SyntheticGuideline.of("Embargo Period Date", 1, EMBARGO_PERIOD_DATE_SPEC);
public static SyntheticGuideline LANGUAGE = SyntheticGuideline.of("Language", 1, LANGUAGE_SPEC);
public static SyntheticGuideline PUBLISHER = SyntheticGuideline.of("Publisher", 1, PUBLISHER_SPEC);
public static SyntheticGuideline PUBLICATION_DATE = SyntheticGuideline.of("Publication Date", 1, PUBLICATION_DATE_SPEC);
public static SyntheticGuideline RESOURCE_TYPE = SyntheticGuideline.of("Resource Type", 1, RESOURCE_TYPE_SPEC);
public static SyntheticGuideline DESCRIPTION = SyntheticGuideline.of("Description", 1, DESCRIPTION_SPEC);
public static SyntheticGuideline FORMAT = SyntheticGuideline.of("Format", 1, FORMAT_SPEC);
public static SyntheticGuideline RESOURCE_IDENTIFIER = SyntheticGuideline.of("Resource Identifier", 1, RESOURCE_IDENTIFIER_SPEC);
public static SyntheticGuideline ACCESS_RIGHTS = SyntheticGuideline.of("Access Rights", 1, ACCESS_RIGHTS_SPEC);
public static SyntheticGuideline SOURCE = SyntheticGuideline.of("Source", 1, SOURCE_SPEC);
public static SyntheticGuideline SUBJECT = SyntheticGuideline.of("Subject", 1, SUBJECT_SPEC);
public static SyntheticGuideline LICENSE_CONDITION = SyntheticGuideline.of("License Condition", 1, LICENSE_CONDITION_SPEC);
public static SyntheticGuideline COVERAGE = SyntheticGuideline.of("Coverage", 1, COVERAGE_SPEC);
public static SyntheticGuideline SIZE = SyntheticGuideline.of("Size", 1, SIZE_SPEC);
public static SyntheticGuideline GEO_LOCATION = SyntheticGuideline.of("Geo Location", 1, GEO_LOCATION_SPEC);
public static SyntheticGuideline RESOURCE_VERSION = SyntheticGuideline.of("Resource Version", 1, RESOURCE_VERSION_SPEC);
public static SyntheticGuideline FILE_LOCATION = SyntheticGuideline.of("File Location", 1, FILE_LOCATION_SPEC);
public static SyntheticGuideline CITATION_TITLE = SyntheticGuideline.of("Citation Title", 1, CITATION_TITLE_SPEC);
public static SyntheticGuideline CITATION_VOLUME = SyntheticGuideline.of("Citation Volume", 1, CITATION_VOLUME_SPEC);
public static SyntheticGuideline CITATION_ISSUE = SyntheticGuideline.of("Citation Issue", 1, CITATION_ISSUE_SPEC);
public static SyntheticGuideline CITATION_START_PAGE = SyntheticGuideline.of("Citation Start Page", 1, CITATION_START_PAGE_SPEC);
public static SyntheticGuideline CITATION_END_PAGE = SyntheticGuideline.of("Citation End Page", 1, CITATION_END_PAGE_SPEC);
public static SyntheticGuideline CITATION_EDITION = SyntheticGuideline.of("Citation Edition", 1, CITATION_EDITION_SPEC);
public static SyntheticGuideline CITATION_CONFERENCE_PLACE = SyntheticGuideline.of("Citation Conference Place", 1, CITATION_CONFERENCE_PLACE_SPEC);
public static SyntheticGuideline CITATION_CONFERENCE_DATE = SyntheticGuideline.of("Citation Conference Date", 1, CITATION_CONFERENCE_DATE_SPEC);
public static SyntheticGuideline AUDIENCE = SyntheticGuideline.of("Audience", 1, AUDIENCE_SPEC);
public static SyntheticGuideline TITLE = SyntheticGuideline.of("Title", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, TITLE_SPEC);
public static SyntheticGuideline CREATOR = SyntheticGuideline.of("Creator", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, CREATOR_SPEC);
public static SyntheticGuideline CONTRIBUTOR = SyntheticGuideline.of("Contributor", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, CONTRIBUTOR_SPEC);
public static SyntheticGuideline FUNDING_REFERENCE = SyntheticGuideline.of("Funding Reference", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, FUNDING_REFERENCE_SPEC);
public static SyntheticGuideline ALTERNATE_IDENTIFIER = SyntheticGuideline.of("Alternate Identifier", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, ALTERNATE_IDENTIFIER_SPEC);
public static SyntheticGuideline RELATED_IDENTIFIER = SyntheticGuideline.of("Related Identifier", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, RELATED_IDENTIFIER_SPEC);
public static SyntheticGuideline EMBARGO_PERIOD_DATE = SyntheticGuideline.of("Embargo Period Date", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, EMBARGO_PERIOD_DATE_SPEC);
public static SyntheticGuideline LANGUAGE = SyntheticGuideline.of("Language", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, LANGUAGE_SPEC);
public static SyntheticGuideline PUBLISHER = SyntheticGuideline.of("Publisher", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, PUBLISHER_SPEC);
public static SyntheticGuideline PUBLICATION_DATE = SyntheticGuideline.of("Publication Date", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, PUBLICATION_DATE_SPEC);
public static SyntheticGuideline RESOURCE_TYPE = SyntheticGuideline.of("Resource Type", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, RESOURCE_TYPE_SPEC);
public static SyntheticGuideline DESCRIPTION = SyntheticGuideline.of("Description", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, DESCRIPTION_SPEC);
public static SyntheticGuideline FORMAT = SyntheticGuideline.of("Format", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, FORMAT_SPEC);
public static SyntheticGuideline RESOURCE_IDENTIFIER = SyntheticGuideline.of("Resource Identifier", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, RESOURCE_IDENTIFIER_SPEC);
public static SyntheticGuideline ACCESS_RIGHTS = SyntheticGuideline.of("Access Rights", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, ACCESS_RIGHTS_SPEC);
public static SyntheticGuideline SOURCE = SyntheticGuideline.of("Source", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, SOURCE_SPEC);
public static SyntheticGuideline SUBJECT = SyntheticGuideline.of("Subject", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, SUBJECT_SPEC);
public static SyntheticGuideline LICENSE_CONDITION = SyntheticGuideline.of("License Condition", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, LICENSE_CONDITION_SPEC);
public static SyntheticGuideline COVERAGE = SyntheticGuideline.of("Coverage", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, COVERAGE_SPEC);
public static SyntheticGuideline SIZE = SyntheticGuideline.of("Size", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, SIZE_SPEC);
public static SyntheticGuideline GEO_LOCATION = SyntheticGuideline.of("Geo Location", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, GEO_LOCATION_SPEC);
public static SyntheticGuideline RESOURCE_VERSION = SyntheticGuideline.of("Resource Version", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, RESOURCE_VERSION_SPEC);
public static SyntheticGuideline FILE_LOCATION = SyntheticGuideline.of("File Location", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, FILE_LOCATION_SPEC);
public static SyntheticGuideline CITATION_TITLE = SyntheticGuideline.of("Citation Title", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, CITATION_TITLE_SPEC);
public static SyntheticGuideline CITATION_VOLUME = SyntheticGuideline.of("Citation Volume", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, CITATION_VOLUME_SPEC);
public static SyntheticGuideline CITATION_ISSUE = SyntheticGuideline.of("Citation Issue", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, CITATION_ISSUE_SPEC);
public static SyntheticGuideline CITATION_START_PAGE = SyntheticGuideline.of("Citation Start Page", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, CITATION_START_PAGE_SPEC);
public static SyntheticGuideline CITATION_END_PAGE = SyntheticGuideline.of("Citation End Page", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, CITATION_END_PAGE_SPEC);
public static SyntheticGuideline CITATION_EDITION = SyntheticGuideline.of("Citation Edition", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, CITATION_EDITION_SPEC);
public static SyntheticGuideline CITATION_CONFERENCE_PLACE = SyntheticGuideline.of("Citation Conference Place", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, CITATION_CONFERENCE_PLACE_SPEC);
public static SyntheticGuideline CITATION_CONFERENCE_DATE = SyntheticGuideline.of("Citation Conference Date", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, CITATION_CONFERENCE_DATE_SPEC);
public static SyntheticGuideline AUDIENCE = SyntheticGuideline.of("Audience", "description", "link", "fairPrinciples",
1, RequirementLevel.MANDATORY, AUDIENCE_SPEC);
private static final List<SyntheticGuideline> GUIDELINES = Collections.unmodifiableList(
Arrays.asList(