LDflex / Query-Solid

Simple access to data in Solid pods through LDflex expressions
https://solid.github.io/query-ldflex/
MIT License
66 stars 15 forks source link

Underscores in property name prevents from getting the value #38

Open matthieu-fesselier opened 5 years ago

matthieu-fesselier commented 5 years ago

As you explain in the documentation, the semi-colon can be substituted by the underscores in property names.

In my example, I have a property name containing an underscore, and I get undefined when I try to fetch its value. Is it related?

const base_context = {
  '@vocab': 'http://happy-dev.fr/owl/#',
  rdf: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
  rdfs: 'http://www.w3.org/2000/01/rdf-schema#',
  ldp: 'http://www.w3.org/ns/ldp#',
  foaf: 'http://xmlns.com/foaf/0.1/',
  name: 'rdfs:label',
  acl: 'http://www.w3.org/ns/auth/acl#',
  permissions: 'acl:accessControl',
  mode: 'acl:mode',
};

await solid.data.context.extend(base_context);
const resource = solid.data['https://api.coopstarter.happy-dev.fr/resources/1/'];
console.log(`${await resource.publication_year}`); // Prints undefined
RubenVerborgh commented 5 years ago

Indeed, you are hitting a limitation of the underscore approach here; it tries to find publication:year.

As a workaround, you could define the hd prefix as http://happy-dev.fr/owl/# and then use hd_publication_year.