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