Skip to content
This repository was archived by the owner on Jan 30, 2026. It is now read-only.
This repository was archived by the owner on Jan 30, 2026. It is now read-only.

Error ingesting objects with blank nodes containing bag:// uris #5

@emetsger

Description

@emetsger

The package ingest service is unable to deposit objects that have blank nodes containing bag:// uris. For example, given an object in a package (elided for brevity):

<>      a       <osf:NodeBase> , <osf:Registration> , <osf:OSFBusinessObject> , <osf:DataEntity> , <osf:Node> , <rdfs:Resource> ;
        <osf:hasContributor>
                [ a       <osf:OSFBusinessObject> , <osf:Contributor> , <rdfs:Resource> ;
                  <osf:hasPermission>
                          "ADMIN" ;
                  <osf:hasUser>
                          <bag://MyPackage/data/obj/root/bwgcm.ttl> ;
                  <osf:isBibliographic>
                          true
                ] ;
        <osf:hasContributor>
                [ a       <osf:OSFBusinessObject> , <osf:Contributor> , <rdfs:Resource> ;
                  <osf:hasPermission>
                          "ADMIN" ;
                  <osf:hasUser>
                          <bag://MyPackage/data/obj/root/qmdz6.ttl> ;
                  <osf:isBibliographic>
                          false
                ] ;

For example, the object of the [] <osf:hasUser> <bag://MyPackage/data/obj/root/qmdz6.ttl> triple will not be able to be updated from the bag:// URI to the Fedora repository URI. This is due to an intersection of Fedora behaviors and the algorithm used by the package ingest service to re-write bag:// URIs to the ultimate resource URI of deposited objects.

Initial deposit of the object succeeds. Upon deposit, Fedora skolemizes the blank nodes. The secondary operation to update the bag:// URIs fails because of the single subject restriction of Fedora, and the structure of the update:

INSERT {
<http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/.well-known/genid/27/21/5c/f3/27215cf3-48c7-46a4-a9f5-670b06b2a8ef> <http://www.dataconservancy.org/osf-business-object-model#hasUser> <http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/ManualWiredDepositIT.depositFlatPackageTest/bwgcm> .
<http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/.well-known/genid/aa/1a/f4/d1/aa1af4d1-cc6e-4a76-b971-f91b8b0bfc63> <http://www.dataconservancy.org/osf-business-object-model#hasUser> <http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/ManualWiredDepositIT.depositFlatPackageTest/qmdz6> .
<http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/ManualWiredDepositIT.depositFlatPackageTest/eq7a4> <http://www.dataconservancy.org/osf-business-object-model#registeredBy> <http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/ManualWiredDepositIT.depositFlatPackageTest/qmdz6> .
<http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/ManualWiredDepositIT.depositFlatPackageTest/eq7a4> <http://www.dataconservancy.org/osf-business-object-model#hasChild> <http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/ManualWiredDepositIT.depositFlatPackageTest/vae86> .
<http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/ManualWiredDepositIT.depositFlatPackageTest/eq7a4> <http://www.dataconservancy.org/osf-business-object-model#registeredFrom> <http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/ManualWiredDepositIT.depositFlatPackageTest/3e7rd> .
<http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/ManualWiredDepositIT.depositFlatPackageTest/eq7a4> <http://www.dataconservancy.org/osf-business-object-model#hasProvider> <http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/ManualWiredDepositIT.depositFlatPackageTest/eq7a4_osfstorage> .
}
WHERE{};
DELETE {
<http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/.well-known/genid/27/21/5c/f3/27215cf3-48c7-46a4-a9f5-670b06b2a8ef> <http://www.dataconservancy.org/osf-business-object-model#hasUser> <bag://MyPackage/data/obj/root/bwgcm.ttl> .
<http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/.well-known/genid/aa/1a/f4/d1/aa1af4d1-cc6e-4a76-b971-f91b8b0bfc63> <http://www.dataconservancy.org/osf-business-object-model#hasUser> <bag://MyPackage/data/obj/root/qmdz6.ttl> .
<http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/ManualWiredDepositIT.depositFlatPackageTest/eq7a4> <http://www.dataconservancy.org/osf-business-object-model#hasChild> <bag://MyPackage/data/obj/root/vae86.ttl> .
<http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/ManualWiredDepositIT.depositFlatPackageTest/eq7a4> <http://www.dataconservancy.org/osf-business-object-model#hasProvider> <bag://MyPackage/data/obj/root/eq7a4_osfstorage.ttl> .
<http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/ManualWiredDepositIT.depositFlatPackageTest/eq7a4> <http://www.dataconservancy.org/osf-business-object-model#registeredBy> <bag://MyPackage/data/obj/root/qmdz6.ttl> .
<http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/ManualWiredDepositIT.depositFlatPackageTest/eq7a4> <http://www.dataconservancy.org/osf-business-object-model#registeredFrom> <bag://MyPackage/data/obj/root/3e7rd.ttl> .
}
WHERE{}

This manifests as a 403 being returned by Fedora when the update is attempted:

403 Forbidden 
http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/.well-known/genid/27/21/5c/f3/27215cf3-48c7-46a4-a9f5-670b06b2a8ef is not in the topic of this RDF, which is http://localhost:8080/fcrepo/rest/tx:b95d9774-739e-4f35-a587-a7b4640a2f8e/ManualWiredDepositIT.depositFlatPackageTest/eq7a4 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions