Hi Ray,
> Hi. I've been experimenting with SPARQL Motion and SPIN and have a
> couple of questions. Fyi, I'm using TopBraid ME v3.1.1.
>
> - Can you access a SPARQL endpoint from within a SPIN rule? For
> example, consider a BasicPerson class with first name and last name
> properties. Is it possible to define a SPIN rule for this class that
> creates a birthday property from a remote SPARQL endpoint?
Yes, this can be done, but it requires TBC 3.2.0. The SPARQL engine
that we use supports a keyword called SERVICE, which can be used to
issue a remote query against a SPARQL end point.
http://jena.sourceforge.net/ARQ/service.html
This is extremely powerful because it allows SPIN rules to access
almost any remote data source, as long as it is exposed through a
SPARQL end point.
>
> - Building on the question above. Is it possible to reference
> variables defined in a SPARQL motion script within a SPIN rule? For
> example, can I provide the address of the endpoint as an argument when
> I perform inferencing from a SPARQL Motion script? As another example,
> can I have a rule that creates a birthday property only when the
> user's last name begins some user specified value (established in the
> SPARQL Motion script).
If you are in a SPARQLMotion script that executes SPIN rules via
sml:ApplyTopSPIN, then the only way to communicate with the SPIN rules
is via triples. In other words, your script can add or delete triples
(e.g. via sml:ApplyConstruct) and the rules would then look for those
triples at execution time. But it's hard to give general advice here
without seeing your use case. Maybe it would be better to wrap your
SPARQLMotion scripts into user-defined SPIN functions and then invoke
the SM functions as part of a SPIN rule.
For an example of this, have a look at
http://composing-the-semantic-web.blogspot.com/2009/09/currency-conversion-with-units-ontology.html
>
> - It seems that you can encode the similar types of operations as SPIN
> rules or as SPARQL Motion construct statements. The main differences
> are when the processing takes place and what you do with the results.
> With SPIN the inferred triples are generated when inferencing is
> performed, and the results wind up in your in memory model. As new
> triples are added to the in memory model, the rule may be run against
> the new triples. When using SPARQL Motion, the triples are generated
> only when the script is explicitly executed, and are available for
> further manipulation, or export into a variety of forms (RDF, etc).
> Are there any other significant differences to be aware of? Is
> performance between the two roughly the same or is one faster/more
> efficient than the other (assuming I'm working with a relatively
> static set of instance data)?
In general SPARQLMotion is more powerful because it has all those
features to import, process and export data. However, if you have the
choice between a complex (SM) and simple (SPIN) solution, then I
recommend using SPIN only. As shown above, you can extend SPIN using
SPARQLMotion, to add the missing bits. The two of them can be mixed
and matched arbitrarily. If you can provide details about your task we
can give more detailed advice.
Thanks
Holger
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TopBraid Composer Users" group.
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-composer-users?hl=en
-~----------~----~----~----~------~----~------~--~---