inrupt / solid-client-js

Library for accessing data and managing permissions on data stored in a Solid Pod
https://docs.inrupt.com/developer-tools/javascript/client-libraries/
MIT License
232 stars 36 forks source link

Calling `getThing` with the IRI of a Blank Node throws Error #1752

Open danielbakas opened 2 years ago

danielbakas commented 2 years ago

Search terms you've used

Bug description

I was trying to iterate all things from a Dataset, but getThing throws an error if the subject URI is a Blank Node (_:example)

To Reproduce

  1. Declare a Solid resource resource with a thing Thing with a Blank Node as subject: _:Thing
  2. `const dataset = await getSolidDataset(resourceURI, {fetch})
  3. const thing = getThing(dataset, "_:Thing")

Expected result

A Thing with a Blank Node as subject URI and no errors.

Actual result

The following error:

Environment

$ npx envinfo --system --npmPackages --binaries --npmGlobalPackages --browsers
  System:
    OS: macOS 13.0
    CPU: (8) arm64 Apple M1 Pro
    Memory: 1.33 GB / 16.00 GB
    Shell: 5.8.1 - /bin/zsh
  Binaries:
    Node: 18.11.0 - /opt/homebrew/bin/node
    Yarn: 1.22.19 - /opt/homebrew/bin/yarn
    npm: 8.19.3 - ~/Documents/Profesional/Semantyk/Projects/Semantyk/client/node_modules/.bin/npm
  Browsers:
    Chrome: 107.0.5304.110
    Safari: 16.1
  npmPackages:
    @comunica/query-sparql-solid: ^2.3.0 => 2.3.0 
    @inrupt/solid-client: ^1.23.3 => 1.23.3 
    @inrupt/solid-ui-react: ^2.8.2 => 2.8.2 
    @inrupt/vocab-common-rdf: ^1.0.5 => 1.0.5 
    @react-three/drei: ^9.40.0 => 9.40.0 
    @react-three/fiber: ^8.9.1 => 8.9.1 
    @testing-library/jest-dom: ^5.16.5 => 5.16.5 
    @testing-library/react: ^13.4.0 => 13.4.0 
    @testing-library/user-event: ^14.4.3 => 14.4.3 
    bootstrap: ^5.2.2 => 5.2.2 
    lamina: ^1.1.23 => 1.1.23 
    node-fetch: ^3.2.10 => 3.2.10 
    npm: ^8.19.3 => 8.19.3 
    rdflib: ^2.2.20 => 2.2.20 
    react: ^18.2.0 => 18.2.0 
    react-bootstrap: ^2.5.0 => 2.5.0 
    react-dom: ^18.2.0 => 18.2.0 
    react-force-graph: ^1.41.15 => 1.41.15 
    react-helmet-async: ^1.3.0 => 1.3.0 
    react-router-dom: ^6.4.3 => 6.4.3 
    react-scripts: 5.0.1 => 5.0.1 
    stream-to-string: ^1.2.0 => 1.2.0 
    three: ^0.146.0 => 0.146.0 
    three-forcegraph: ^1.39.7 => 1.39.7 
    web-vitals: ^3.0.4 => 3.0.4 
  npmGlobalPackages:
    npm: 8.19.2

Additional information

ThisIsMissEm commented 2 years ago

I suspect this may be related to: https://github.com/inrupt/solid-client-js/pull/1545

Though it might be worth testing if this works for you:

const thing = getThing(dataset, getSourceIri(dataset) + "_:Thing")
ThisIsMissEm commented 2 years ago

Also related: https://github.com/inrupt/solid-client-js/issues/1511

ThisIsMissEm commented 2 years ago

Seems to also be in https://github.com/inrupt/solid-client-js/issues/948