Hi Phil,

I also did not see a function that will split a string based on a delimiter in 
the latest version.  I need to split strings based on arbitrary delimiters all 
the time so I wrote a split string function in java and made it a property 
function to use in CONSTRUCT queries.  

In addition to splitting strings it also takes a parameter that when TRUE, 
automatically trims the strings of leading/trailer whitespace before returning 
them.  This is very useful since you would likely need to trim each one before 
using it to generate a URI, etc.

It would be a very helpful function to have in the base product.

Tim


> -----Original Message-----
> From: [email protected] [mailto:topbraid-
> [email protected]] On Behalf Of [email protected]
> Sent: Thursday, May 21, 2009 8:05 AM
> To: TopBraid Composer Users
> Subject: [tbc-users] Re: How to extract multiple values from a space-
> delimited string?
> 
> 
> Scott -
> 
> I know how to use the string function to separate a SINGLE string out,
> but how do I get them ALL parsed out given that the number of
> individual elements is unknown (i.e. one drug might be related to 3
> others and another drug might have 17 related drugs)?
> 
> On May 21, 8:01 am, Scott Henninger <[email protected]>
> wrote:
> > Phil, the "BBB CCC..." string will need to be parsed an individually
> > turned into URIs.  See the String Functions in the SPARQLMotion
> > Functions Reference in the Help files.
> >
> > -- Scott
> >
> > On May 21, 7:56 am, [email protected] wrote:
> >
> >
> >
> > > I have a sparql motion script that iterates over a series of xml
> files
> > > (1 drug per file), converts the XML into RDF, and creates instances
> of
> > > the classes/properties from an ontology.  One of the elements
> within
> > > the xml is a series space-separated values that I need to parse
> into
> > > individual triples of a given property. Here is a simple example:
> >
> > >   <?xml version="1.0" encoding="UTF-8" ?>
> > > <Drug ID="AAA">
> > >   <DrugName>
> > >     <![CDATA[ dummy ]]>
> > >   </DrugName>
> > >   <RelatedDrug>
> > >     <![CDATA[  BBB CCC DDD EEE FFF GGG ]]>
> > >   </RelatedDrug>
> > > </Drug>
> >
> > > I need to generate triples like the following:
> >
> > >      :AAA a :Drug .
> > >      :AAA :hasName "dummy" .
> > >      :AAA :isRelatedTo :BBB .
> > >      :AAA :isRelatedTo :CCC .
> > >      :AAA :isRelatedTo :DDD .
> > >      :AAA :isRelatedTo :EEE .
> > >      :AAA :isRelatedTo :FFF .
> > >      :AAA :isRelatedTo :GGG .
> >
> > > The number of related drugs will differ from drug to drug (i.e.
> file
> > > to file).  The files are being processed via an IterateOverSelect
> > > module where the body of that module is a series of construct
> modules
> > > that produce the individual triples you see above.  However, what I
> am
> > > getting now is:
> >
> > >      :AAA a :Drug .
> > >      :AAA :hasName "dummy" .
> > >      :AAA :isRelatedTo :BBB_CCC_DDD_EEE_FFF_GGG  .
> >
> > > How can I split that last element up into individual triples?
> >
> > > Phil- Hide quoted text -
> >
> > - Show quoted text -
> 

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to