Ah Ok, if the issue is to convert a string (teamId) to a URI then maybe try

{= IRI(CONCAT("http://namespace-whatever#";, str(?teamId))) }

Holger


On 17/07/2019 10:18, AdrianP wrote:
Thanks, Holger.

I actually tried to simplify the real code but in doing so I realize I made it misleading.  The parameter for the outer ui:call is not teamId in the actual use case.  It's something that could return multiple teamIds, say something like jerseyColor.  Multiple teams could result but I'd be looking for the players and their former teams for multiple teams by the current teamId.  Does that make sense?

I hadn't noticed the inconsistently escaped double-quotes. They are like that in the real code too.  Seems like that would cause issues but it's (mostly) working as expected except for the parameter to the inner ui:call.  Worth noting that with my small sample set so far I'm only getting one "team" back so far so perhaps the quote issue would reveal itself once I expand my testing.

Should I be trying to ui:concat with formerTeam: and ?teamId   ?   I played around with that but could not get the syntax right.

Thank you, Adrian.

On Tuesday, July 16, 2019 at 5:21:39 PM UTC-6, Holger Knublauch wrote:

    Hi Adrian,

    On 17/07/2019 04:05, AdrianP wrote:
    Hello,

    I'm trying to create the following JSON structure for return from
    a web service call:

    "players" : [
        {
    "playerId" : "123",
    "playerName" : "JD Martinez",
    "playerCurrentTeam" : "Boston Redsox",
    "teamId" : "1000",
    "playerFormerTeams" : [
    "Diamondbacks",
    "Tigers",
    "Astros"
    ]
    },
        {
    "playerId" : "456",
    "playerName" : "Chris Sale",
    "playerCurrentTeam" : "Boston Redsox",
    "teamId" : "1000",
    "playerFormerTeams" : [
    "Whitesox",
    "Dodgers"
    ]
    }
    ]

    I'm being given access to two SPIN templates to call:
    1. returns all current players for a team whose value is passed
    in as a parameter.
    2. returns all former teams for player whose value is a result of
    the id in the first template (1000 in the case above).

    @prefix former_team: <http://metadata.mlb.org/teams/team_data#>
    <http://metadata.mlb.org/teams/team_data#> .

                        <swon:Value arg:name=\"players\">
    <swon:Array>
    <swon:Object>
    <ui:call arg:team_id=\"{= ?team_id }\" ui:template=\"{=
    int-spin:PlayersByTeamIdTemplate }\" ui:varName=\"rs\">
    <ui:forEach
    ui:bindVars="?playerId,?playerName,?playerCurrentTeam,?teamId"
    ui:resultSet="{= ?rs }">
    <swon:Value arg:name="playerId" arg:value="{= ?playerId }" />
    <swon:Value arg:name="playerName" arg:value="{= ?playerName }" />
    <swon:Value arg:name="playerCurrentTeam" arg:value="{=
    ?playerCurrentTeam }" />
    <swon:Value arg:name="teamId" arg:value="{= ?teamId }" />
    <swon:Value arg:name=\"playerFormerTeams\">
    <ui:call arg:pft=\"{= former_team:1000 }\" ui:template=\"{=
    int-spin:FormerTeamsByIdTemplate }\" ui:varName=\"pft_rs\">
    <swon:RSArray arg:resultSet=\"{= ?pft_rs }\"/>
    </ui:call>
    </swon:Value>
    </ui:forEach>
    </ui:call>
    </swon:Object>
    </swon:Array>
                        </swon:Value>
    How do I pass in the teamId result from the first query
    (PlayersByTeamIdTemplate) to the second query
    (FormerTeamsByIdTemplate)?
    In the example above I've hard-coded it (former_team:1000 to
    prove it works and it does (there is a prefix for "former_team").

    I've tried things like arg:pft=\"{= former_team:?teamId }\" but
    that doesn't work.

    Have you also tried arg:pft="{= ?teamId }"? If that doesn't work,
    could you send us the definition of the
    int-spin:FormerTeamsByIdTemplate query so that I can see what else
    could be mismatching?

    Looking at the snippet above I also do wonder why the " characters
    are sometimes escaped with \ and sometimes not...

    Regards,
    Holger


--
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/f308799b-25a1-449c-9f11-564f1c2a8189%40googlegroups.com <https://groups.google.com/d/msgid/topbraid-users/f308799b-25a1-449c-9f11-564f1c2a8189%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
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/b2af217b-5752-19c9-2bec-cf795a37511d%40topquadrant.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to