Supports iri-reference format validation. (#766)

* Supports relative-json-pointer validation.

Resolves #761

* Supports uri-reference format.

Resolves #763

* Supports iri-refereence format validation.

REsolves # 765

* Supports iri-reference format validation.

Resolves #765

* Supports iri-reference format validation.

Resolves # 765

---------

Co-authored-by: Faron Dutton <faron.dutton@insightglobal.com>
diff --git a/src/main/java/com/networknt/schema/JsonMetaSchema.java b/src/main/java/com/networknt/schema/JsonMetaSchema.java
index c80c789..199410b 100644
--- a/src/main/java/com/networknt/schema/JsonMetaSchema.java
+++ b/src/main/java/com/networknt/schema/JsonMetaSchema.java
@@ -19,6 +19,7 @@
 import com.fasterxml.jackson.databind.JsonNode;

 import com.networknt.schema.format.DateFormat;

 import com.networknt.schema.format.EmailFormat;

+import com.networknt.schema.format.IriReferenceFormat;

 import com.networknt.schema.format.PatternFormat;

 import com.networknt.schema.format.RegexFormat;

 import com.networknt.schema.format.TimeFormat;

@@ -46,7 +47,7 @@
 

     public static final List<Format> COMMON_BUILTIN_FORMATS = new ArrayList<>();

 

-    // this section contains formats that is common for all specification versions.

+    // this section contains formats common to all dialects.

     static {

         COMMON_BUILTIN_FORMATS.add(pattern("alpha", "^[a-zA-Z]+$"));

         COMMON_BUILTIN_FORMATS.add(pattern("alphanumeric", "^[a-zA-Z0-9]+$"));

@@ -64,6 +65,7 @@
         COMMON_BUILTIN_FORMATS.add(pattern("uuid", "^\\p{XDigit}{8}-\\p{XDigit}{4}-\\p{XDigit}{4}-\\p{XDigit}{4}-\\p{XDigit}{12}$"));

         COMMON_BUILTIN_FORMATS.add(new DateFormat());

         COMMON_BUILTIN_FORMATS.add(new EmailFormat());

+        COMMON_BUILTIN_FORMATS.add(new IriReferenceFormat());

         COMMON_BUILTIN_FORMATS.add(new RegexFormat());

         COMMON_BUILTIN_FORMATS.add(new TimeFormat());

         COMMON_BUILTIN_FORMATS.add(new UriFormat());

diff --git a/src/main/java/com/networknt/schema/format/IriReferenceFormat.java b/src/main/java/com/networknt/schema/format/IriReferenceFormat.java
new file mode 100644
index 0000000..c3b5b29
--- /dev/null
+++ b/src/main/java/com/networknt/schema/format/IriReferenceFormat.java
@@ -0,0 +1,16 @@
+package com.networknt.schema.format;
+
+import java.net.URI;
+
+public class IriReferenceFormat extends AbstractRFC3339Format {
+
+    public IriReferenceFormat() {
+        super("iri-reference", "must be a valid RFC 3986 IRI-reference");
+    }
+
+    @Override
+    protected boolean validate(URI uri) {
+        return true;
+    }
+
+}
diff --git a/src/test/java/com/networknt/schema/JsonSchemaTestSuiteTest.java b/src/test/java/com/networknt/schema/JsonSchemaTestSuiteTest.java
index 8f11919..def6d1f 100644
--- a/src/test/java/com/networknt/schema/JsonSchemaTestSuiteTest.java
+++ b/src/test/java/com/networknt/schema/JsonSchemaTestSuiteTest.java
@@ -80,7 +80,6 @@
         this.disabled.add(Paths.get("src/test/suite/tests/draft2020-12/optional/format-assertion.json"));
         this.disabled.add(Paths.get("src/test/suite/tests/draft2020-12/optional/format/idn-email.json"));
         this.disabled.add(Paths.get("src/test/suite/tests/draft2020-12/optional/format/idn-hostname.json"));
-        this.disabled.add(Paths.get("src/test/suite/tests/draft2020-12/optional/format/iri-reference.json"));
         this.disabled.add(Paths.get("src/test/suite/tests/draft2020-12/optional/format/iri.json"));
         this.disabled.add(Paths.get("src/test/suite/tests/draft2020-12/ref.json"));
         this.disabled.add(Paths.get("src/test/suite/tests/draft2020-12/refRemote.json"));
@@ -95,7 +94,6 @@
         this.disabled.add(Paths.get("src/test/suite/tests/draft2019-09/optional/float-overflow.json"));
         this.disabled.add(Paths.get("src/test/suite/tests/draft2019-09/optional/format/idn-email.json"));
         this.disabled.add(Paths.get("src/test/suite/tests/draft2019-09/optional/format/idn-hostname.json"));
-        this.disabled.add(Paths.get("src/test/suite/tests/draft2019-09/optional/format/iri-reference.json"));
         this.disabled.add(Paths.get("src/test/suite/tests/draft2019-09/optional/format/iri.json"));
         this.disabled.add(Paths.get("src/test/suite/tests/draft2019-09/recursiveRef.json"));
         this.disabled.add(Paths.get("src/test/suite/tests/draft2019-09/ref.json"));
@@ -111,7 +109,6 @@
         this.disabled.add(Paths.get("src/test/suite/tests/draft7/optional/float-overflow.json"));
         this.disabled.add(Paths.get("src/test/suite/tests/draft7/optional/format/idn-email.json"));
         this.disabled.add(Paths.get("src/test/suite/tests/draft7/optional/format/idn-hostname.json"));
-        this.disabled.add(Paths.get("src/test/suite/tests/draft7/optional/format/iri-reference.json"));
         this.disabled.add(Paths.get("src/test/suite/tests/draft7/optional/format/iri.json"));
         this.disabled.add(Paths.get("src/test/suite/tests/draft7/ref.json"));
         this.disabled.add(Paths.get("src/test/suite/tests/draft7/refRemote.json"));