Thank you Scott, 
I did use your approach and the loading process increased substantially. 
Meanwhile, I need to work either on the script or transform my other 
spreadsheets because they usually contain multiple sets of classes and 
subclasses in one row. 

Thanks again for your great help

Sina

-----Original Message-----
From: [email protected] [mailto:[email protected]] 
On Behalf Of Scott Henninger
Sent: Friday, June 11, 2010 11:36 AM
To: TopBraid Suite Users
Subject: [topbraid-users] Re: create ontology from spreadsheet

Sina; First, I should state that rdfs:Class and owl:Class are
logically equivalent.  You can use either.  I believe the example
sheet I sent last time does what you are asking for in one step.  If
not, let me know where it fails.

I think the key issue to understand is that each row of a spreadsheet
is interpreted by the importer as an instance.  If you have two
rdfs:label properties in the row, this will create two rdfs:label
values for the instance.

It may also help to know how the spreadsheet is translated into
triples.  For each cell a triple is create as follows:
  - subject: row name
  - predicate column name
  - object: cell value

Since spreadsheets do not name rows, the wizard will create a URI
using the instance pattern specified in the last wizard.  Since the
subject is a URI, if it occurs more than once, data is merged.  As an
example, suppose you have the following data and your instance pattern
is "%1", the name in the first row, owl:Class as the Class Name, and
the type for the rdfs:subClassOf set to owl:Class:

 owl:Class rdfs:label          rdfs:subClassOf
 Class_3   ACUTE DERMATITIS    Class_29
 Class_29  NODULAR AND.

.will translate into the following graph:

:Class_3 a owl:Class .
:Class_3 rdfs:label "ACUTE DERMATITIS" .
:Class_3 rdfs:subClassOf :Class_29 .
:Class_29 a owl:Class .
:Class_29 rdfs:label "NODULAR AND." .

I.e. :Class_29 is the same in both the rdfs:subClassOf column and the
owl:Class column because the same URI is generated.  Two "things" with
the same URI are, by definition, the same thing in RDF.

Changing the size of the Java heap is a FAQ found at
http://www.topquadrant.com/products/TBS_FAQ.html#TBC6

Spreadsheet table import and RDF are topic covered in our training -
we have one coming up in July and may be a great resource for getting
up to speed on using TBS effectively (see
http://www.topquadrant.com/training/training_overview.html).

-- Scott


On Jun 11, 10:31 am, "Madani,Sina" <[email protected]> wrote:
> Thank you Scott for the guide and explanation.
> What would my ontology miss if I follow my current steps which is the same as 
> yours in basics; start a new ontology, import my super classes first with 
> owl:Class and rdfs:label only columns and in the second step import my 
> subclasses as owl:Class, rdfs:subClassOf (which are ids of the classes in the 
> previous step), and rdfs:label into the ontology I created in the previous 
> step
> I guess my basic question is what happen if I don't use rdfs:Class in my 
> import process?
>
> On a separate subject, I tried to load the whole 64,000 rows with the above 
> process, I waited an hour in the second step before terminating the 
> thread(pc). I'll try today again with the 64 bit version of TB on a Mac 
> machine to see if it make a difference time wise. Is there any adjustment we 
> can do in TopBraid for memory usage to make the process faster?
>
> Sina
>
> From: [email protected] 
> [mailto:[email protected]] On Behalf Of Scott Henninger
> Sent: Thursday, June 10, 2010 4:24 PM
> To: [email protected]
> Subject: Re: [topbraid-users] Re: create ontology from spreadsheet
>
> Sina; I'm attaching a slight variant of the text file you sent.  In the 
> variant, the subClassOf statement and their labels are broken out into 
> individual rows.  If the format you gave can't be changed to this, then you 
> will need to import and use some SPARQL queries to define how the columns 
> should be interpreted.
>
> The trick (thank you Gokhan) is to import into an existing model.  This way 
> the importer knows about namespaces and prefixes for standard RDF/RDFS/OWL 
> definitions, such as owl:Class and rdfs:label.
>
> So first create a new model.  While that file is open, import the file using 
> the Import Tab-Delimited Spreadsheet importer.  On the first page of the 
> wizard, specify the text file to import and choose "Import to the current 
> ontology".  On the last page of the wizard, specify "owl:Class" for the Class 
> Name.  You'll probably also want to define owl:Class as the Property data 
> type for rdfs:subClassOf".
>
> This will import the class and subclass definitions.  There are a couple of 
> adjustments you may want to make after that (both of these are optional, 
> depending on your needs):
>
>  1. Because rdfs:Class is in the range definition of rdfs:subClassOf, the 
> class at the root will be members of both rdfs:Class and owl:Class.  You can 
> either adjust my procedure above and the spreadsheet to use rdfs:Class 
> instead of owl:Class or remove rdfs:Class
>
>  2. Composer will infer that any instance of owl:Class that does not have a 
> rdfs:subClassOf statement is a subclass of owl:Thing.  This makes it possible 
> to display all class definitions in a tree hierarchy starting at owl:Thing.  
> You may want to assert these.
>
> See how that works and let us know if further guidance is needed for making 
> adjustments.
>
> -- Scott
>
> On 6/10/10 8:45 AM, Madani,Sina wrote:
>
> Scott,
>
> I attached a sample tab delimited file with the first 9 rows of my master 
> spreadsheet.
>
> The desired import in one step is to have a way to assign 2 rdfs:label 
> columns, one label for owl:Class and one label for rdfs:subClassOf
>
> For workaround, I first import only column C as owl:Class and column D as 
> rdfs:label (label for supper classes) into my ontology. Then I import the 
> original spreadsheet with column A as owl:Class, Column B as rdfs:label (for 
> sub classes this time), column C as rdfs:subClassOf, and ignore column D, and 
> the rest as annotation data type properties.
>
> As I mentioned before, I am a beginner in semantic web and TopBriad, so there 
> maybe something very simple that I am missing.
>
> Thanks for the help
>
> Sina
>
> -----Original Message-----
>
> From: [email protected]<mailto:[email protected]> 
> [mailto:[email protected]] On Behalf Of Scott Henninger
>
> Sent: Wednesday, June 09, 2010 7:39 PM
>
> To: TopBraid Suite Users
>
> Subject: [topbraid-users] Re: create ontology from spreadsheet
>
> Sinha; If you import the table as instances of owl:Class, it will
>
> create instances of owl>Class, which are class definition.  But I'm
>
> not sure about the format provided.  Would you be able to send a few
>
> rows as an example?
>
> -- Scott
>
> On Jun 9, 3:38 pm, "Madani,Sina" 
> <[email protected]><mailto:[email protected]> wrote:
>
> Thank you Irene,
>
> I do have a class in every row but the super class is in the same row as 
> well. That's how I got stuck where I wanted to have a separate rdfs:label for 
> concep1tparentlabel in column 4
>
> Owl:Class, rdfs:lable, rdfs:subClassOf,
>
> Concept1, Concept1label, Concept1Parent, Concept1ParentLabel, 
> Concept1Attribute1, Concept1Attribute2, .....
>
> Hopefully SPARQLmotion will solve my issue.
>
> Sina
>
> -----Original Message-----
>
> From: [email protected]<mailto:[email protected]> 
> [mailto:[email protected]] On Behalf Of Irene Polikoff
>
> Sent: Wednesday, June 09, 2010 3:03 PM
>
> To: [email protected]<mailto:[email protected]>
>
> Subject: RE: [topbraid-users] Re: create ontology from spreadsheet
>
> Sina,
>
> Classes are instances of owl:Class, so you can use the importer to get them
>
> in.
>
> Importer will create a resource for every row. Your rows have two resources
>
> - a class and its superclasss
>
> Assuming that you have a row for each class irrespective of whether it has
>
> children or not, you are fine as is and do not need to worry about the
>
> fourth column.
>
> Let me explain it by example. Let's say you have:
>
> my:Person Person
>
> my:Woman Woman my:Person Person
>
> my:Man Man my:Person Person
>
> The first row will create a class Person, the second row will create a class
>
> Woman and make it a subclass of the Person, the third row will create a
>
> class Man and make it a subclass of a Person. Thus, you do not need a forth
>
> column because there was a row with Person in a first column and its label
>
> in the second column.
>
> If, on the other hand, you do not have a row for each class, you will then
>
> need to write some queries to get these resources created.
>
> Regards,
>
> Irene
>
> -----Original Message-----
>
> From: [email protected]<mailto:[email protected]>
>
> [mailto:[email protected]] On Behalf Of Madani,Sina
>
> Sent: Wednesday, June 09, 2010 2:27 PM
>
> To: '[email protected]<mailto:[email protected]>'
>
> Subject: RE: [topbraid-users] Re: create ontology from spreadsheet
>
> I am a beginner with TopBraid Composer ME and not familiar with that tool. I
>
> need to create an ontology from a spreadsheet with 64000 rows and columns
>
> related to classes, subclasses, label, and some annotation datatype
>
> properties. I am considering only is-a (rdf:type) relationships between
>
> concepts at this moment (based on the mapping from SNOMED) but will
>
> eventually need to handle more relationships. I appreciate your
>
> help/hint/advices.
>
> Thanks
>
> Sina
>
> -----Original Message-----
>
> From: [email protected]<mailto:[email protected]>
>
> [mailto:[email protected]] On Behalf Of Scott Henninger
>
> Sent: Wednesday, June 09, 2010 1:09 PM
>
> To: TopBraid Suite Users
>
> Subject: [topbraid-users] Re: create ontology from spreadsheet
>
> Sina; I am curious about this:
>
> <<because I am defining everything in my ontology as classes>>
>
> Why not use Composer's ontology editing tools?
>
> -- Scott
>
> On Jun 9, 12:43 pm, "Madani,Sina" 
> <[email protected]><mailto:[email protected]> wrote:
>
> Thank you Scott,
>
> Then I guess spreadsheet import wizard won't be useful for me because I am
>
> defining everything in my ontology as classes, there are no instances.
>
> Could you please send me a good reading source for SPARQLmotion?
>
> Sina
>
> -----Original Message-----
>
> From: [email protected]<mailto:[email protected]>
>
> [mailto:[email protected]] On Behalf Of Scott Henninger
>
> Sent: Tuesday, June 08, 2010 6:07 PM
>
> To: TopBraid Suite Users
>
> Subject: [topbraid-users] Re: create ontology from spreadsheet
>
> Sina; If the first row has column names with rdfs:label, etc., the
>
> Import wizard will recognize the qname and create the properties as
>
> desired.  If you are doing this through a SPARQLMotion script, don't
>
> forget to import system triples, otherwise the script will not know
>
> about rdfs:subClassOf, etc.
>
> For all spreadsheet importers the rule is that each worksheet defines
>
> one class definition.  Note that using the Excel importer, you can
>
> specify multiple sheets.  Each row defines an instance of the class.
>
> Each column names a property for instances of that class, not the
>
> class itself.
>
> So a sheet named "Person" will create the class definition :Person.  A
>
> column in that sheet named "rdfs:label" will create a label for each
>
> instance, such as:
>
>   ?rowX-Y rdfs:label ?cellValue
>
> <<I guess my question is how do I assign labels to classes and
>
> subclasses in one spreadsheet?>>
>
> This could be done in a SPARQLMotion script where you read in the
>
> spreadsheet and interpret the columns as you want with SPARQL
>
> queries.  But there isn't a way to do this directly with the
>
> importers, per the above explanation.
>
> -- Scott
>
> On Jun 8, 12:53 pm, Sina <[email protected]><mailto:[email protected]> 
> wrote:
>
> Hi,
>
> how I can assign rdfs:label to a specific column during tab-delimited
>
> import process?
>
> I have a spreadsheet of 4 columns:
>
> owl:Class, rdfs:label, rdfs:subClassOf, rdfs:label
>
> how do I assign rdfs:label in the 4th Clim to my superclasses in the
>
> third column? Obviously the above format doesn't work. I guess my
>
> question is how do I assign labels to classes and subclasses in one
>
> spreadsheet? Currently I am doing it with two separate spreadsheets in
>
> 2 steps.
>
> Thanks
>
> Sina
>
> --
>
> You received this message because you are subscribed to the Google
>
> Group "TopBraid Suite Users", the topics of which include TopBraid
>
> Composer,
>
> TopBraid Live, TopBraid Ensemble, SPARQLMotion and
>
> ...
>
> read more »

-- 
You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include TopBraid Composer,
TopBraid Live, TopBraid Ensemble, SPARQLMotion 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
Group "TopBraid Suite Users", the topics of which include TopBraid Composer,
TopBraid Live, TopBraid Ensemble, SPARQLMotion 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

Reply via email to