From c58def9d17471f4c268cd4502ce2ced3e3ad0740 Mon Sep 17 00:00:00 2001 From: LSmyrnaios Date: Wed, 2 Aug 2023 12:58:45 +0300 Subject: [PATCH] Add additional template information for SyntheticGuidelines. --- .../guideline/AbstractGuideline.java | 46 +++++++- .../validation/guideline/Guideline.java | 10 +- .../guideline/SyntheticGuideline.java | 51 +++++++++ .../openaire/FAIR_Data_GuidelinesProfile.java | 41 +++++-- .../LiteratureGuidelinesV3Profile.java | 72 ++++++++----- .../LiteratureGuidelinesV4Profile.java | 101 +++++++++++------- 6 files changed, 247 insertions(+), 74 deletions(-) diff --git a/src/main/java/eu/dnetlib/validator2/validation/guideline/AbstractGuideline.java b/src/main/java/eu/dnetlib/validator2/validation/guideline/AbstractGuideline.java index d833f37..2cf086b 100644 --- a/src/main/java/eu/dnetlib/validator2/validation/guideline/AbstractGuideline.java +++ b/src/main/java/eu/dnetlib/validator2/validation/guideline/AbstractGuideline.java @@ -3,20 +3,62 @@ package eu.dnetlib.validator2.validation.guideline; public abstract class AbstractGuideline implements Guideline { 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; } + } diff --git a/src/main/java/eu/dnetlib/validator2/validation/guideline/Guideline.java b/src/main/java/eu/dnetlib/validator2/validation/guideline/Guideline.java index 02b9854..d3946b1 100644 --- a/src/main/java/eu/dnetlib/validator2/validation/guideline/Guideline.java +++ b/src/main/java/eu/dnetlib/validator2/validation/guideline/Guideline.java @@ -4,9 +4,17 @@ import eu.dnetlib.validator2.engine.Status; public interface Guideline { + 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); diff --git a/src/main/java/eu/dnetlib/validator2/validation/guideline/SyntheticGuideline.java b/src/main/java/eu/dnetlib/validator2/validation/guideline/SyntheticGuideline.java index 9faecb1..e3e50fb 100644 --- a/src/main/java/eu/dnetlib/validator2/validation/guideline/SyntheticGuideline.java +++ b/src/main/java/eu/dnetlib/validator2/validation/guideline/SyntheticGuideline.java @@ -14,10 +14,19 @@ public final class SyntheticGuideline extends AbstractGuideline { private CompilationResult compilationResult; private static final ThreadLocal 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 { 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; + } + } diff --git a/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/FAIR_Data_GuidelinesProfile.java b/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/FAIR_Data_GuidelinesProfile.java index aa6ed4a..a591ecb 100644 --- a/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/FAIR_Data_GuidelinesProfile.java +++ b/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/FAIR_Data_GuidelinesProfile.java @@ -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> GUIDELINES = Collections.unmodifiableList( Arrays.asList( diff --git a/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/LiteratureGuidelinesV3Profile.java b/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/LiteratureGuidelinesV3Profile.java index 81a33ac..dc58141 100644 --- a/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/LiteratureGuidelinesV3Profile.java +++ b/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/LiteratureGuidelinesV3Profile.java @@ -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 GUIDELINES = Collections.unmodifiableList( Arrays.asList( diff --git a/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/LiteratureGuidelinesV4Profile.java b/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/LiteratureGuidelinesV4Profile.java index a78a767..4c208d1 100644 --- a/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/LiteratureGuidelinesV4Profile.java +++ b/src/main/java/eu/dnetlib/validator2/validation/guideline/openaire/LiteratureGuidelinesV4Profile.java @@ -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 GUIDELINES = Collections.unmodifiableList( Arrays.asList(