IRI resolution against a same-scheme base rewrites absolute info: IRIs (info:a/b -> info:a/a/b) since jena-iri removal
Maintainer thường phản hồi trong vòng 1 ngày
@afs đang làm issue này rồi.
Từ ngày 6/11/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
Version
6.2.0
What happened?
When the base IRI and the reference share a scheme and the scheme uses a rootless path with no authority (e.g. info:), an absolute reference is resolved as if it were relative:
var m = ModelFactory.createDefaultModel();
m.read(new ByteArrayInputStream(
"<info:fedora/resource1> <http://x/p> <info:fedora/resource2> .".getBytes()),
"info:fedora/resource1", "TURTLE");
m.write(System.out, "N-TRIPLES");
Jena 5.5.0 (default provider IRIProviderJenaIRI):
<info:fedora/resource1> <http://x/p> <info:fedora/resource2> .
Jena 6.2.0 (default provider IRIProvider3986):
<info:fedora/fedora/resource1> <http://x/p> <info:fedora/fedora/resource2> .
The same happens with UpdateFactory.create(sparql, base).
The cause is in IRI3986.resolve, which already behaves this way in 5.5.0:
IRI3986.create("info:fedora/resource1").resolve(IRI3986.create("info:fedora/resource2"))
// -> info:fedora/fedora/resource2
This matches the non-strict branch of RFC 3986 §5.2.2 (if (!strict) and R.scheme == Base.scheme then undefine R.scheme). RFC 3986 calls this a loophole from earlier specifications whose use "should be avoided" and keeps it only for backward compatibility. A reference with a scheme is expected to be returned unchanged, apart from dot-segment removal.
In 5.x this did not matter because IRIProviderJenaIRI was the default. 6.x removes jena-iri, so IRIProvider3986 is the only provider and there is no way to get strict resolution.
Impact: Fedora Commons (fcrepo) parses internal RDF and SPARQL Update with an info:fedora/... base. With 6.x, every absolute info:fedora/... IRI is rewritten to info:fedora/fedora/..., which corrupts stored triples. Found while evaluating the upgrade in https://github.com/fcrepo/fcrepo/pull/2338.
Expected: an absolute reference whose scheme equals the base's scheme resolves to itself (strict RFC 3986 resolution), or strict mode can at least be configured.
- Ngôn ngữ chính
- Java
- Star
- 1.5k
- Fork
- 733
- Merge trung bình
- 1 ngày 8 giờ
- Pull request đã merge (30 ngày)
- 56
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của apache/jena
-
rset command throws NPE in ResultsFormat.guessSyntaxCó thể đã có người làm @Ostrzyciel đã nhận 16 ngày trước. Đang mởbug Cmd
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug JSON-LD
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
apache/jena#4175 · 6 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Failing tests on Locale nb-noCó thể đã có người làm @OyvindLGjesdal đã nhận 6 ngày trước. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 55/100
apache/jena#4372 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 30/100
apache/jena#4364 · 15 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
OpDatasetNames (empty GRAPH ?g {} in quad form) fails with ClassCastException on TDB2 (& ARQNotImplemented elsewhere)Có thể đã có người làm @krickert đã nhận 7 ngày trước. Đang mởbug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
apache/jena#4362 · 6 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Issue tương tự
-
Document and enforce pull request review guidelinesCó thể đã có người làm @dashorst đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày
-
`Time.at(t, in: nil)` returns UTC instead of the local time (or the time zone of `t`), unlike CRubyĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
hermes-queue
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
chrisalunlloyd2-sudo/mindpalace#349 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Retry-After parser accepts invalid delay-seconds valuesCó thể đã có người làm @Dhruvraj-Rana đã nhận hôm nay. Đang mởBug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
open-telemetry/opentelemetry-java#9018 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
dropwizard-testing: DAOTest.inTransaction leaves the transaction open when an Error is thrownĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
dropwizard/dropwizard#11410 ·
Maintainer thường phản hồi trong vòng 1 ngày