Loading the API definition at startup
Opened this issue · 0 comments
tpluscode commented
In the PoC, I had shape which I would use to generate a loong SPARQL query. This method can be useful when API triples are spread across multiple graph but in a simpler scenario, a single graph with the entire API could be loaded as a whole.
I would like this to be pluggable and configurable
Generated query
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX schema: <http://schema.org/>
PREFIX sh: <http://www.w3.org/ns/shacl#>
CONSTRUCT {
?resource1 rdf:type <https://kopflos.described.at/Config>.
?resource1 <https://kopflos.described.at/api> ?resource2.
?resource1 <https://kopflos.described.at/resourceLoader> ?resource68.
?resource3 schema:isPartOf ?resource2.
?resource2 <https://kopflos.described.at/resourceLoader> ?resource51.
?resource3 sh:targetClass ?resource4.
?resource3 sh:targetNode ?resource5.
?resource3 sh:property ?resource6.
?resource3 <https://kopflos.described.at/resourceLoader> ?resource18.
?resource3 <https://kopflos.described.at/renderer> ?resource26.
?resource3 <https://kopflos.described.at/handler> ?resource34.
?resource6 sh:path ?resource7.
?resource6 <https://kopflos.described.at/handler> ?resource8.
?resource8 <https://code.described.at/implementedBy> ?resource10.
?resource10 rdf:type ?resource12.
?resource10 <https://code.described.at/link> ?resource13.
?resource18 <https://code.described.at/implementedBy> ?resource20.
?resource20 rdf:type ?resource22.
?resource20 <https://code.described.at/link> ?resource23.
?resource26 <https://code.described.at/implementedBy> ?resource28.
?resource28 rdf:type ?resource30.
?resource28 <https://code.described.at/link> ?resource31.
?resource34 <https://code.described.at/implementedBy> ?resource36.
?resource36 rdf:type ?resource38.
?resource36 <https://code.described.at/link> ?resource39.
?resource34 <https://kopflos.described.at/method> ?resource42.
?resource51 <https://code.described.at/implementedBy> ?resource53.
?resource53 rdf:type ?resource55.
?resource53 <https://code.described.at/link> ?resource56.
?resource68 <https://code.described.at/implementedBy> ?resource70.
?resource70 rdf:type ?resource72.
?resource70 <https://code.described.at/link> ?resource73.
}
WHERE {
{
SELECT ?resource1 ?resource2 ?resource68 WHERE {
?resource1 rdf:type <https://kopflos.described.at/Config>.
{ ?resource1 <https://kopflos.described.at/api> ?resource2. }
UNION
{ ?resource1 <https://kopflos.described.at/resourceLoader> ?resource68. }
}
}
UNION
{
SELECT ?resource3 ?resource2 ?resource51 WHERE {
?resource1 rdf:type <https://kopflos.described.at/Config>;
<https://kopflos.described.at/api> ?resource2.
{ ?resource3 schema:isPartOf ?resource2. }
UNION
{ ?resource2 <https://kopflos.described.at/resourceLoader> ?resource51. }
}
}
UNION
{
SELECT ?resource3 ?resource4 ?resource5 ?resource6 ?resource18 ?resource26 ?resource34 WHERE {
?resource1 rdf:type <https://kopflos.described.at/Config>;
<https://kopflos.described.at/api> ?resource2.
?resource3 schema:isPartOf ?resource2.
{ ?resource3 sh:targetClass ?resource4. }
UNION
{ ?resource3 sh:targetNode ?resource5. }
UNION
{ ?resource3 sh:property ?resource6. }
UNION
{ ?resource3 <https://kopflos.described.at/resourceLoader> ?resource18. }
UNION
{ ?resource3 <https://kopflos.described.at/renderer> ?resource26. }
UNION
{ ?resource3 <https://kopflos.described.at/handler> ?resource34. }
}
}
UNION
{
SELECT ?resource6 ?resource7 ?resource8 WHERE {
?resource1 rdf:type <https://kopflos.described.at/Config>;
<https://kopflos.described.at/api> ?resource2.
?resource3 schema:isPartOf ?resource2;
sh:property ?resource6.
{ ?resource6 sh:path ?resource7. }
UNION
{ ?resource6 <https://kopflos.described.at/handler> ?resource8. }
}
}
UNION
{
SELECT ?resource8 ?resource10 ?resource12 ?resource13 WHERE {
?resource1 rdf:type <https://kopflos.described.at/Config>;
<https://kopflos.described.at/api> ?resource2.
?resource3 schema:isPartOf ?resource2;
sh:property ?resource6.
?resource6 <https://kopflos.described.at/handler> ?resource8.
?resource8 <https://code.described.at/implementedBy> ?resource10.
{
?resource10 rdf:type ?resource12.
BIND(?resource12 AS ?resource9)
}
UNION
{
?resource10 <https://code.described.at/link> ?resource13.
BIND(?resource13 AS ?resource9)
}
}
}
UNION
{
SELECT ?resource18 ?resource20 ?resource22 ?resource23 WHERE {
?resource1 rdf:type <https://kopflos.described.at/Config>;
<https://kopflos.described.at/api> ?resource2.
?resource3 schema:isPartOf ?resource2;
<https://kopflos.described.at/resourceLoader> ?resource18.
?resource18 <https://code.described.at/implementedBy> ?resource20.
{
?resource20 rdf:type ?resource22.
BIND(?resource22 AS ?resource19)
}
UNION
{
?resource20 <https://code.described.at/link> ?resource23.
BIND(?resource23 AS ?resource19)
}
}
}
UNION
{
SELECT ?resource26 ?resource28 ?resource30 ?resource31 WHERE {
?resource1 rdf:type <https://kopflos.described.at/Config>;
<https://kopflos.described.at/api> ?resource2.
?resource3 schema:isPartOf ?resource2;
<https://kopflos.described.at/renderer> ?resource26.
?resource26 <https://code.described.at/implementedBy> ?resource28.
{
?resource28 rdf:type ?resource30.
BIND(?resource30 AS ?resource27)
}
UNION
{
?resource28 <https://code.described.at/link> ?resource31.
BIND(?resource31 AS ?resource27)
}
}
}
UNION
{
SELECT ?resource34 ?resource36 ?resource38 ?resource39 WHERE {
?resource1 rdf:type <https://kopflos.described.at/Config>;
<https://kopflos.described.at/api> ?resource2.
?resource3 schema:isPartOf ?resource2;
<https://kopflos.described.at/handler> ?resource34.
?resource34 <https://code.described.at/implementedBy> ?resource36.
{
?resource36 rdf:type ?resource38.
BIND(?resource38 AS ?resource35)
}
UNION
{
?resource36 <https://code.described.at/link> ?resource39.
BIND(?resource39 AS ?resource35)
}
}
}
UNION
{
SELECT ?resource34 ?resource42 WHERE {
?resource1 rdf:type <https://kopflos.described.at/Config>;
<https://kopflos.described.at/api> ?resource2.
?resource3 schema:isPartOf ?resource2;
<https://kopflos.described.at/handler> ?resource34.
?resource34 <https://kopflos.described.at/method> ?resource42.
}
}
UNION
{
SELECT ?resource51 ?resource53 ?resource55 ?resource56 WHERE {
?resource1 rdf:type <https://kopflos.described.at/Config>;
<https://kopflos.described.at/api> ?resource2.
?resource2 <https://kopflos.described.at/resourceLoader> ?resource51.
?resource51 <https://code.described.at/implementedBy> ?resource53.
{
?resource53 rdf:type ?resource55.
BIND(?resource55 AS ?resource52)
}
UNION
{
?resource53 <https://code.described.at/link> ?resource56.
BIND(?resource56 AS ?resource52)
}
}
}
UNION
{
SELECT ?resource68 ?resource70 ?resource72 ?resource73 WHERE {
?resource1 rdf:type <https://kopflos.described.at/Config>;
<https://kopflos.described.at/resourceLoader> ?resource68.
?resource68 <https://code.described.at/implementedBy> ?resource70.
{
?resource70 rdf:type ?resource72.
BIND(?resource72 AS ?resource69)
}
UNION
{
?resource70 <https://code.described.at/link> ?resource73.
BIND(?resource73 AS ?resource69)
}
}
}
}