Re: Welcome to the community group on Bridging GraphQL and RDF

Hi everyone and hello Holger - I think the work you've done on SHACL is
very exciting! The GraphQL solution you outlined seems very in line with
the goals of this community group.

I'm Michael from the U.S. and I've been a web developer for over a decade,
mostly front-end but also Node.js.

I often use proprietary tools -- I have dabbled with Apollo -- but I would
prefer to use standards-based tools. I have been evaluating the RDF/JSON-LD
stack to see if it will fit my needs.

My main reason for joining this group is that I would like to be able to
send a REST request for data from client to server and specify how the data
should be returned, filtering out properties I don't need, and including
referenced objects (or edges of edges of those references...). In an
advanced scenario, the data *could* be spread across multiple sources and I
would expect the server to stitch it all together.

I'm actually less interested in using GraphQL syntax directly (because it's
a string). I would rather use JSON-LD. I envision GraphQL syntax as
syntactic sugar that can convert to underlying JSON-LD. This is similar I
think to how you can [construct queries](
https://graphql.org/graphql-js/constructing-types/).

I have looked into Linked Data Platform (LDP) but it seems limited in its
ability to do shape modeling using the Prefer header:

```
Prefer: return=representation; include="
http://www.w3.org/ns/ldp#PreferMinimalContainer"
```

From: https://www.w3.org/TR/ldp/#header-accept-post#h-prefer-parameters

(If I have misunderstood all that's possible with LDP, please let me know!)

After looking at LDP, I came to SHACL because at first glance it looks a
bit like GraphQL and I assumed it could be used to model RDF queries.

I've come to understand that SHACL's purpose is actually for RDF
validation. Still, I think it's a powerful convention to be able to start
with a target node and walk the graph with sh:property/sh:path.

```
{
  "targetClass": "Person",
  "property": [{
    "path": "name"
  }, {
    "path": "height"
  }, {
    "path": "friends",
    "property": {
      "path": "name"
    },
    "maxCount": 5
  }]
}
```

I don't know how easy it would be to build off of SHACL as it currently
stands to do this sort of querying, but I do think that using Shapes could
be a great starting point.

This is my first community group post. Please let me know if I'm way off
track here!

Thanks,
Michael Puckett
Web Developer

Received on Saturday, 22 February 2020 13:41:15 UTC