Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SPARQL Service Description: add "features/dialects" and a client protocol #152

Open
VladimirAlexiev opened this issue Oct 8, 2021 · 5 comments

Comments

@VladimirAlexiev
Copy link
Contributor

VladimirAlexiev commented Oct 8, 2021

Why?

@rubensworks (w3c/EasierRDF#88 (comment)) and @HolgerKnublauch (w3c/EasierRDF#88 (comment)) motivate the need to express SPARQL "features" and "dialects" to enable piece-wise extension of SPARQL.

Previous work

Proposed solution

Not a solution, but some considerations:

  • An extended SD is the obvious choice to describe what a SPARQL endpoint provides in a lot more detail
  • But we also need to devise a client protocol (what the client wants). Should it be based on simple HTTP headers (easier) or some RDF payload (can express more complex features)?
  • A catalog of features could be developed from this issue list, but we need more work to turn it into a coordinated set.
    • IMHO one of the best contributions to the development of RDF Shape languages was the catalog of Use Cases that was compiled, I have something like that in mind

Considerations for backward compatibility

This is a strong enabler for backward compatibility, so that new SPARQL features can be introduced and implemented in a piece-wise way, rather than all together in globally coordinated versions (1.2, 1.3, etc)

@rubensworks
Copy link
Member

rubensworks commented Oct 8, 2021

I agree that the SD is a great place to describe these features, so that client can detect these features, and possibly modify their query according to the supported features. (this is in essence how the Comunica query engine handles heterogeneous sources)

If this were to be added, I think it would be important that the SD would be made mandatory: #153.
Otherwise it will become very hard for clients to figure out with certainty what the server supports exactly.


Related work:

The TPF interface makes use of a feature-based hypermedia description, which builds upon the Hydra ontology.

@kasei
Copy link
Collaborator

kasei commented Oct 8, 2021

sd:feature, sd:languageExtension, and other related terms were designed to support this sort of development. Can you describe an example of wanting to "express SPARQL 'features' and 'dialects'" that wouldn't be supported by the current Service Description terms?

But we also need to devise a client protocol

I don't understand this. What would this client protocol do? Would this be completely orthogonal to the service description (which is accessed through a simple HTTP request)?

@afs
Copy link
Collaborator

afs commented Oct 10, 2021

I would have thought the number one concern in looking at an endpoint is what data it has. Then, if there are choices of endpoints does the question of how to get the data become significant.

There are now related approaches like content-negotiation by profile that play into the mix.

@VladimirAlexiev
Copy link
Contributor Author

VladimirAlexiev commented Oct 12, 2021

@kasei If we can just instantiate these mechanisms (catalog of features could be developed from this issue list) that would be perfect. But the depth and complexity of ideas discussed here may in some cases require:

  • custom sub-properties
  • hierarchical structures (think a feature-subfeature tree)
  • dependencies (feature X only makes sense over language Y)

Examples:

BTW, https://gist.github.com/VladimirAlexiev/8c861db09c08ff202311bae2ee0d6b30 gets the extra 3 flavors of individuals for SD (noticed some problems and emailed Ivan).

What would this client protocol do? Would this be completely orthogonal to the service description (which is accessed through a simple HTTP request)?

Ideally, they should be the same for consistency.
But client "accept" instructions have a tradition:

  • they are Accept-* headers with custom and relatively simple structure
  • they express preference order (the q parameter), which a SD doesn't have (it's a "set" of things that the server offers)

I don't think a client will necessarily be happy to send a bunch of RDF just to state what he prefers.
In other words:

  • SD servers want to speak comprehensively and understandably, i.e. with RDF
  • But clients may prefer to speak in shorthand, using a simple DSL

@afs Agree, DX-PROF is very relevant.

@VladimirAlexiev
Copy link
Contributor Author

VladimirAlexiev commented Dec 28, 2023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants