Hello, Steve;  Are you using one of the mapping functions from the template, or an _expression_?  I.e. some details may be needed so we could be a bit more helpful.

In the meantime, you can define your own functions by creating a subclass of spin:Templates.  That template could then traverse the rdf list using rdf:first, etc., and they will appear in the Create Mapping Function wizard.  As long as the template is functional - returning one value - anything you can get to via SPARQL can be used.

You may be at that point already, so let us know.

-- Scott

P.S. A passing detail:  Collections are
a convenience tag that only exists for RDF/XML.  Turtle, for example, only has rdf lists.  IIRC, collections will be marked as "antiquated" (as opposed to "deprecated), or some similar designation by RDF 1.1.  The conclusion being to think of these in terms of rdf lists, as this is how SPARQL and RDF in general implement "collections".  Food for thought and nothing more.



On 8/8/2013 1:53 PM, Steve Ray wrote:

Holger,

            Thanks for that. I built a toy set of ontologies and the mapping works just as it should. Now I think I’m hung up on a detail that I can’t find a fix for: As it turns out, the json:device_agent property of the json:Device is populated with a collection containing a single instance value (see the [] in the attachment), which I think is confusing the target resource function. I need to somehow get something like an rdf:first invoked to pull out the instance, but I don’t see how to modify the target resource function. Should I be making a subclass of the target resource function and invoking that? (Sounds messy).

 

 

- Steve

 

Steven R. Ray, Ph.D.

Distinguished Research Fellow

Carnegie Mellon University

NASA Research Park

Building 23 (MS 23-11)

P.O. Box 1
Moffett Field, CA 94305-0001

Email:    [email protected]

Phone: (650) 587-3780

Cell:      (202) 316-6481

Skype: steverayconsulting

10yr-logo-sm

 

From: [email protected] [mailto:[email protected]] On Behalf Of Holger Knublauch
Sent: Wednesday, August 07, 2013 8:38 PM
To: [email protected]
Subject: Re: [topbraid-users] Problem using SPINMap

 

On 8/8/2013 8:01, Steve Ray (CMU) wrote:

Hi,

            I’m having trouble mapping two related classes in class A (in this case “json”) to two similarly related classes in class B (in this case “cmusc”). I was planning to use the spinmap:targetResource function, but in this case it doesn’t seem to allow this function to cross to a second class (see the red triangle in the attached .png).

            This must come up frequently, so I must be missing something, yes?


The short answer is that you need a mapping context (e.g. buildURI) between the two classes before you can add mappings.

A bit of background. If you define a mapping context between two classes, then you tell the system how to translate the URI of a resource on the left into URIs for the class on the right. These might be equal or URI derivation functions such as buildURI. Then when you connect two properties, the engine can use the context to figure out the source subject and the target subject for the new triple, while the value itself will be computed using the transformation function. This is how it works when you start a connection at a *property* - the transformation will use the *value* of the given property as its starting point.

Now, if you define a mapping starting with the upper right corner of a class, then you tell the system to use the URI of the source instance itself as input to the transformation function. Indeed this could be the spinmap:targetResource function, or any other that takes a URI resource as its first input argument. If the system would allow you to link the URI to a property in any unrelated class on the right, then there would be no context to figure out what the source and target subjects should be. To prevent this, the UI disallows creating such links.

I am not exactly sure what you are trying to model, but I assume you want to map all values from json:device_agent to cmusc:hasAgent. So just drag a line between those. Then select spinmap:targetResource with the context from the lower mapping so that SPINMap can turn the json:Device_Agent into the corresponding smusc:DeviceAgent.

HTH
Holger

--
-- You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include Enterprise Vocabulary Network (EVN), TopBraid Composer, TopBraid Live,
TopBraid Ensemble, SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to
[email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/topbraid-users?hl=en
---
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].
For more options, visit https://groups.google.com/groups/opt_out.

--
-- You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include Enterprise Vocabulary Network (EVN), TopBraid Composer, TopBraid Live,
TopBraid Ensemble, SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to
[email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/topbraid-users?hl=en
---
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].
For more options, visit https://groups.google.com/groups/opt_out.
 
 

--
-- You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include Enterprise Vocabulary Network (EVN), TopBraid Composer, TopBraid Live,
TopBraid Ensemble, SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to
[email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/topbraid-users?hl=en
---
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].
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Reply via email to