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

Cannot remove @solid/context #36

Open matthieu-fesselier opened 5 years ago

matthieu-fesselier commented 5 years ago

My current context is:

{
  '@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'
};

The @vocab defines our default which is used for almost all our properties. With the @solid context, some properties are overriden. For example, when we try to target http://happy-dev.fr/owl/#firstName, we get http://xmlns.com/foaf/0.1/givenName.

Is it possible to use only our context and not the solid one?

RubenVerborgh commented 5 years ago

So when using https://github.com/solid/query-ldflex/tree/ede10272df5178f1d5910f4888eee31061b7390f#adding-a-custom-json-ld-context, existing properties are favored over custom ones?

@rubensworks Is that expected behavior given the implementation https://github.com/RubenVerborgh/LDflex/blob/f4bc6fe1e8f15bc2af17d24be8b7397357531196/src/JSONLDResolver.js#L53-L56 ?

matthieu-fesselier commented 5 years ago

The existing properties are favored only over our default which is defined by '@vocab': 'http://happy-dev.fr/owl/#' For the properties we define explicitely, it works fine

RubenVerborgh commented 5 years ago

Right… then perhaps it is a feature instead of a bug. i.e., you probably want to explicitly override existing properties.

But I would actually recommend against that, given that the same Solid LDflex expressions then get different meanings. If you want to get really custom, perhaps consider distributing a custom configuration of ldflex rather than extending @solid/query-ldflex. Or in other words: @solid/query-ldflex is a configuration of ldflex; maybe you want your own configuration?

rubensworks commented 5 years ago

That does indeed sound like the intended JSON-LD context semantics. Explicitly defined terms (such as firstName in the Solid context) have priority over @vocab.

Perhaps a flag could be added to context.extend() to exclude the default context? The the user is responsible for the full context.