On 2021-03-18 3:08 pm, [email protected] wrote:

To take this one step further,  EDG supports using SHACL to provide view options in the UI.

it strikes me this is equally relevant to the serialisation of a specific object in TTL (or anything else).

Is there an equivalent service that can do this?

 One option that occurred to me would be to create a graphQL template based on a nodeshape - then  the result (currently serialised as json) could perhaps be serialised as json-ld and ttl

GraphQL is not good at recursion - it can only produce JSON that has a similar structure to the query clauses. So a query with depth 3 can only go 3 levels of bnodes deep. In cases like OWL rdfs:subClassOf ... owl:Restriction ... where the structure of the classes is difficult to predict it will be an overkill to first try to build such a complex GraphQL query.

In SWP this can be achieved through a recursive helper element that walks objects as long as they are blank nodes and collects all triples in the ui:tempGraph. In Active Data Shapes (ADS) such recursion is easily done because it's JavaScript, yet ADS doesn't have a simple way to produce Turtle yet.


This also leads to the question of how to best work with blank nodes in SHACL

this seems to be bypassed in the UI - it does this traversal with a function.

query: "query getSuitableViewShapes($uri: ID!) {↵ resources(uri: $uri) {↵

Is there any way of doing something similar with a user defined shape that can traverse blank nodes?

Potentially yes, and I probably prototyped something along those lines at some stage.

In cases like our form editors and viewers, the system only fetches the top-level triples and if it's a blank node then each widget may make additional requests to walk the structure. For many types of blank nodes we also already have string/label renderers.

Holger





On Thursday, 18 March 2021 at 11:43:14 UTC+11 Holger Knublauch wrote:

    On the server that hosts your namespace, can't you set up a
    rewrite that generates

    http://mytopbraid...:8083/tbl/sparql?query=DESCRIBE%20
    <http://mytopbraid...:8083/tbl/sparql?query=DESCRIBE%20><XY>

    where you replace XY with the URL-encoded URI of the resource that
    was requested? See e.g.

    https://httpd.apache.org/docs/2.4/rewrite/remapping.html
    <https://httpd.apache.org/docs/2.4/rewrite/remapping.html>

    but this sounds like a problem someone must have solved before.
    Given that you plan to call a SWP service, how do you currently
    redirect the URLs to invoke said service?

    You cannot use DESCRIBE in ui:TurtleService and I am not aware of
    a magic property that would get all depending triples of the
    concise bounded description. SPARQL is not good at recursion.

    Holger


    On 2021-03-18 10:11 am, Steve Ray wrote:
    Interesting. The DESCRIBE query sounds intriguing, but I need to
    create the .ttl files so that when somebody types

    http://qudt.org/schema/qudt/Unit <http://qudt.org/schema/qudt/Unit>

    ...it resolves to the Turtle code, without using a SPARQL endpoint.

    Just like if you type http://qudt.org/vocab/unit/A
    <http://qudt.org/vocab/unit/A> you get the definition of the
    Ampere. (Content negotiation will give you either html or ttl
    depending on the header, so a browser yields html).

    Can I use DESCRIBE inside a ui:TurtleServices web service? I
    tried with ui:update, but that expects an INSERT or DELETE. Am I
    making this more complicated than it needs to be?


    Steve




    On Wed, Mar 17, 2021 at 4:08 PM Holger Knublauch
    <[email protected]> wrote:

        Hi Steve,

        you could just use SPARQL DESCRIBE queries, which will
        compute the graph for a resource including its depending
        blank nodes, e.g.

        DESCRIBE
        <http://topquadrant.com/ns/examples/geography#Country>
        <http://topquadrant.com/ns/examples/geography#Country>

        via the SPARQL endpoint.

        Holger


        On 2021-03-18 9:01 am, Steve Ray wrote:
        Hi,
        I'm using SWP to generate a bunch of .ttl files that will be
        available to the LinkedData community for resolving class
        definitions. I'm hoping to use the code below that works
        fine for our instance data, but this code doesn't do the
        right thing when there are bnodes (such as restriction
        classes).
        This is written as a ui prototype that is a subClass of
        ui:TurtleServices.

        *Is there some setting to have it also serialize the
        bnodes*? Here's the ui:prototype code:

        <*ui:group* let:*extension*=".ttl"

        let:*myGraphU*="*{=* ui:graphWithImports(*IRI*(*?graph*)) *}*"

        let:*myInstance*="*{=**IRI*(*?instance*) *}*"

        let:*newPath*="*{=* *CONCAT*(&quot;/generatedFiles/&quot;,
        xsd:string(*?folder*), &quot;/&quot;) *}*">

        <*ui:debug*>

        *<span>*Inside VersionlessIndividual. Value of ?newPath is
        *{=*?newPath*}**</span>*

        </ui:debug>

        <*ui:dumpScope* ui:message="AAA:VersionlessIndividual,
        newPath= *{=* ?newPath *}*"/>

        <*ui:group* let:*localName*="*{=* afn:localname(?myInstance)
        *}*">

        <*ui:group* let:*newFile*="*{=**CONCAT*(?newPath,
        ?localName, ?extension) *}*">

        <*ui:dumpResultSet* ui:message="AAA:VersionlessGraph,
        newUnit= " ui:resultSet="*{=* *?instance* *}*"/>

        <*ui:setContext* ui:silentTransactions="true">

        <*ui:setContext* ui:queryGraph="ui:tempGraph">

        /<!-- Clear out the working graph-->/

        <*ui:update* ui:updateQuery="*{!*

        *DELETE* {

        *GRAPH* ui:tempGraph {

        ?s ?p ?o .

        } .

        }

        *WHERE* {

        ?s ?p ?o .

        } *}*"/>

        <*ui:update* ui:updateQuery="*{!*

        *INSERT* {

        *GRAPH* ui:tempGraph {

        ?myInstance ?p ?o .

        } .

        }

        *WHERE* {

        *GRAPH* ?myGraphU {

        ?myInstance ?p ?o .

        } .

        } *}*"/>

        <*ui:return*/>

        </ui:setContext>

        </ui:setContext>

        </ui:group>

        </ui:group>

        </ui:group>



        ...which produces the following file:


        image.png

        I want all the stuff inside the [] to show up as well!



        Steve


-- You received this message because you are subscribed to the
        Google Groups "TopBraid Suite Users" group.
        To unsubscribe from this group and stop receiving emails
        from it, send an email to [email protected].
        To view this discussion on the web visit
        
https://groups.google.com/d/msgid/topbraid-users/CAGUep85DXyHFA%3DwmgdArgZnw-k6EHPJ5AsRDwYsHBT65sU2csg%40mail.gmail.com
        
<https://groups.google.com/d/msgid/topbraid-users/CAGUep85DXyHFA%3DwmgdArgZnw-k6EHPJ5AsRDwYsHBT65sU2csg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
-- You received this message because you are subscribed to the
        Google Groups "TopBraid Suite Users" group.
        To unsubscribe from this group and stop receiving emails from
        it, send an email to [email protected].
        To view this discussion on the web visit
        
https://groups.google.com/d/msgid/topbraid-users/94b728c4-5723-9bf7-a406-01990f7a7b2f%40topquadrant.com
        
<https://groups.google.com/d/msgid/topbraid-users/94b728c4-5723-9bf7-a406-01990f7a7b2f%40topquadrant.com?utm_medium=email&utm_source=footer>.

-- You received this message because you are subscribed to the
    Google Groups "TopBraid Suite Users" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to [email protected].
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/topbraid-users/CAGUep872hEg4vbd8cnFczKWedgPjUTsMa%2BAhx-3cjQ5E55zkWg%40mail.gmail.com
    
<https://groups.google.com/d/msgid/topbraid-users/CAGUep872hEg4vbd8cnFczKWedgPjUTsMa%2BAhx-3cjQ5E55zkWg%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups "TopBraid Suite Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/topbraid-users/d0f07d25-9c0d-404b-a944-0321affd7a9an%40googlegroups.com <https://groups.google.com/d/msgid/topbraid-users/d0f07d25-9c0d-404b-a944-0321affd7a9an%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups "TopBraid 
Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/topbraid-users/71625fd9-cf03-80a3-eab0-f6bfd42f59b4%40topquadrant.com.

Reply via email to