WIP for when referencing uses URIs
diff --git a/jsonschema/validators.py b/jsonschema/validators.py
index 3acee87..bdd3765 100644
--- a/jsonschema/validators.py
+++ b/jsonschema/validators.py
@@ -102,10 +102,10 @@
     return _validates
 
 
-def _warn_for_remote_retrieve(uri: str):
+def _warn_for_remote_retrieve(uri):
     from urllib.request import Request, urlopen
     headers = {"User-Agent": "python-jsonschema (deprecated $ref resolution)"}
-    request = Request(uri, headers=headers)
+    request = Request(str(uri), headers=headers)
     with urlopen(request) as response:
         warnings.warn(
             "Automatically retrieving remote references can be a security "
@@ -130,6 +130,10 @@
 )
 
 
+def _str_id_of(specification):
+    return lambda schema: str(specification.id_of(schema))
+
+
 def create(
     meta_schema: referencing.jsonschema.ObjectSchema,
     validators: (
@@ -139,7 +143,7 @@
     version: str | None = None,
     type_checker: _types.TypeChecker = _types.draft202012_type_checker,
     format_checker: _format.FormatChecker = _format.draft202012_format_checker,
-    id_of: _typing.id_of = referencing.jsonschema.DRAFT202012.id_of,
+    id_of: _typing.id_of = _str_id_of(referencing.jsonschema.DRAFT202012),
     applicable_validators: _typing.ApplicableValidators = methodcaller(
         "items",
     ),
@@ -611,7 +615,7 @@
     type_checker=_types.draft3_type_checker,
     format_checker=_format.draft3_format_checker,
     version="draft3",
-    id_of=referencing.jsonschema.DRAFT3.id_of,
+    id_of=_str_id_of(referencing.jsonschema.DRAFT3),
     applicable_validators=_legacy_keywords.ignore_ref_siblings,
 )
 
@@ -650,7 +654,7 @@
     type_checker=_types.draft4_type_checker,
     format_checker=_format.draft4_format_checker,
     version="draft4",
-    id_of=referencing.jsonschema.DRAFT4.id_of,
+    id_of=_str_id_of(referencing.jsonschema.DRAFT4),
     applicable_validators=_legacy_keywords.ignore_ref_siblings,
 )
 
@@ -694,7 +698,7 @@
     type_checker=_types.draft6_type_checker,
     format_checker=_format.draft6_format_checker,
     version="draft6",
-    id_of=referencing.jsonschema.DRAFT6.id_of,
+    id_of=_str_id_of(referencing.jsonschema.DRAFT6),
     applicable_validators=_legacy_keywords.ignore_ref_siblings,
 )
 
@@ -739,7 +743,7 @@
     type_checker=_types.draft7_type_checker,
     format_checker=_format.draft7_format_checker,
     version="draft7",
-    id_of=referencing.jsonschema.DRAFT7.id_of,
+    id_of=_str_id_of(referencing.jsonschema.DRAFT7),
     applicable_validators=_legacy_keywords.ignore_ref_siblings,
 )
 
@@ -940,7 +944,7 @@
     def from_schema(  # noqa: D417
         cls,
         schema,
-        id_of=referencing.jsonschema.DRAFT202012.id_of,
+        id_of=_str_id_of(referencing.jsonschema.DRAFT202012),
         *args,
         **kwargs,
     ):
diff --git a/pyproject.toml b/pyproject.toml
index 26d299a..4b4a8b6 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -36,8 +36,8 @@
 dependencies = [
   "attrs>=22.2.0",
   "jsonschema-specifications>=2023.03.6",
-  "referencing>=0.28.4",
-  "rpds-py>=0.7.1",
+  "referencing>=0.31.0",
+  "rpds-py>=0.10.2",
 
   "importlib_resources>=1.4.0;python_version<'3.9'",
   "pkgutil_resolve_name>=1.3.10;python_version<'3.9'",