Hi Rob,
I am updating the documentation of this feature and will include a text
such as the following, on teamworkscripts.ttl
--
A small vocabulary that can be used to annotate SPARQLMotion scripts so
that they can be used in the "Import File using Script" feature with
selected asset collections. The user interface of such script-based
importers asks for a file to be uploaded and then uses a script created
by a SPARQLMotion expert to produce RDF triples as output. These RDF
triples then are added to the currently open production copy or working
copy. The uploaded file may be of any text-based format including
comma-separated values, JSON or XML.
To get started, create a SPARQLMotion file (with .sms.ttl ending) and
import this teamworkscripts.ttl namespace into it. The file must define
one sm:Function that takes exactly one argument of type string. The name
of this argument is arbitrary. When called, the argument will have the
text content of the uploaded file as its value.
The script can access the current context graph (either the production
or working copy) using sml:ImportCurrentRDF.
The return module of the script must be of type sml:ReturnRDF.
The script's function must use either
teamworkscripts:suitableProjectType or
teamworkscripts:suitableVocabulary to declare the scope of asset
collections that it can be applied to.
Once the script has been declared correctly, as above, and the .sms.*
file is in the workspace of the EDG installation, users would see a
fully clickable entry for the script on the Import tab. For custom
teamwork:ProjectTypes, make sure that teamwork:ScriptBasedImportPlugin
is declared as a teamwork:projectPlugin.
--
Maybe this helps?
I noticed that this feature is currently on visible for production
copies (master graph) but I will enable it for working copies too.
On 17/07/2018 10:08, Rob Atkinson wrote:
The EDG developer guide states
"There is also a generic SPARQLMotion-based importer mechanism that
applies to all vocabulary types. Such importers receive an uploaded
file as input and produce triples that shall be added to the current
vocabulary or working copy. In order to create such importers, store
them in a file ending with |.sms.*|. Import the file
|teamworkscripts.ttl| and use the properties defined therein to link
your |sm:Function| either with a vocabulary type or specific
vocabularies for which the function shall show up. The script needs to
end with |sml:ReturnRDF| and take exactly one string argument - the
body of the uploaded file."
there are no links and am not finding anything via google or help.
- so i'm trying to interpret just what "to the current vocabulary or
working copy" means - and what it means for design of custom importers.
poking around in the code base I find reference to
teamwork:scriptBasedFileImport
and teamwork:ScriptBasedFileImportService
with an arg:script: sm:Function parameter
so presumably this means a sparqlmotion script that returns a RDF graph?
There are a few moving parts in an EDG importer -
the plugin
which references a entry page
which calls a service
which calls a function inside a transaction context
there seems to be a fair bit of contract implied in each of these
layers - and teamwork logic is at the heart of it all.
There are three separate graphs involved (?) - the data being
imported, the project (data asset) and its "teamwork graph". How
does the "working copy" concept and the importer relate?
EDG default importers appear to put data into the production copy, but
there are also transactions involved - so what state is the production
copy in during the import process?
The importer script only produces new triples. The surrounding engine
then adds those triples as a transaction. The state of the current graph
is whatever triples are in there before the import.
Holger
Maybe there is some resource that lays this out like a proper Use Case
with specified pre-conditions and post-conditions. In a
design-by-contract environment like TBC we need to know the contract :-(
I suspect there is probably some resource out there that explains all
this - but neither links or search are my friend..
--
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]>.
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].
For more options, visit https://groups.google.com/d/optout.