I am using orientdb 2.0.7, rexster 2.6
> I don't think `@class` (lowercase) has anything to do with the OrientDB class property, All through the documentation the class property is shown as "@class". If you do the query select from V where @class = "MyV" it will return the same as select from MyV > // There is no property named `@class` created this is the problem I mentioned earlier of not knowing how to access the orientdb @class from bulbs, I think it is not exposed to rexster. > I followed all your steps. I created the `MyV` class in the console, and recreated the vertices like this: To make sure everything is correct you should redo all those steps on a completely new database. > And I'm sure that I have the class `MyV` (subclass of `V`) created via the OrientDB console Your list classes output in your second post does not show a "MyV" class. that > "@CLASS": "V" is very strange. > It's also weird that a couple (out of 20) edges Models (in Bulbs) are automatically shown as classes in orientDB: I'm not sure why this is, my first guess would be those classes were auto-created when you created some edges. On Wednesday, April 22, 2015 at 1:12:38 AM UTC-7, Kevin I wrote: > > It's also weird that a couple (out of 20) edges Models (in Bulbs) are > automatically shown as classes in orientDB: > > CLASSES > > ----------------------------------------------+------------------------------------+------------+----------------+ > NAME | SUPERCLASS > | CLUSTERS | RECORDS | > > ----------------------------------------------+------------------------------------+------------+----------------+ > _studio | > | 11 | 2 | > E | > | 10 | 0 | > has_author | E > | 13 | 0 | --> This > one > has_user_level | E > | 12 | 103 | --> And > this one > OFunction | > | 6 | 0 | > OIdentity | > | - | 0 | > ORestricted | > | - | 0 | > ORIDs | > | 8 | 0 | > ORole | OIdentity > | 4 | 3 | > OSchedule | > | 7 | 0 | > OTriggered | > | - | 0 | > OUser | OIdentity > | 5 | 4 | > Room | V > | 15 | 0 | > Student | V > | 14 | 0 | > V | > | 9 | 814 | > > ----------------------------------------------+------------------------------------+------------+----------------+ > TOTAL = 15 > 926 | > > ----------------------------------------------+------------------------------------+------------+----------------+ > > > If this is possible, why isn't possible for the vertices? > But why are the other edges not shown as OrientDB classes here? It would > be nice if @Luca can help with this! > > On Wed, Apr 22, 2015 at 11:47 AM, Kevin I <[email protected] > <javascript:>> wrote: > >> @Kyle, >> >> Yeah, it did stop throwing the error, probably since I restarted Rexster. >> I don't think `@class` (lowercase) has anything to do with the OrientDB >> class property, if I'm not wrong. I think its `@CLASS`. >> >> I followed all your steps. I created the `MyV` class in the console, and >> recreated the vertices like this: >> >> `g.vertices.create({"element_type":"myv", "@class":"MyV", >> "@CLASS":"MyV"})` // Just to make sure. >> >> Still, the vertex looks like this: >> >> { >> "element_type": "myv", >> "@CLASS": "V" // And not `MyV` >> } // There is no property >> named `@class` created >> >> It is like I can't override the value of `@CLASS`. And I'm sure that I >> have the class `MyV` (subclass of `V`) created via the OrientDB console. >> >> Has anyone ever done it before? >> >> >> On Wed, Apr 22, 2015 at 9:31 AM, Kyle <[email protected] <javascript:> >> > wrote: >> >>> Errors happen when you change the schema after starting rexster and >>> connecting in bulbs. >>> If you restart rexster that specific error will probably stop. >>> I haven't figured out this problem completely, I think it has something >>> to do with bulbs creating a transaction when you connect?? >>> If you make any progress on figuring out how to deal with this I would >>> appreciate you sharing that info. >>> ------------- >>> >>> You won't be able to change the class of the vertex from bulbs. >>> move vertex from the console could possibly work. >>> >>> ------------ >>> walkthrough: >>> >>> orientdb> create database plocal:/tmp/foodb admin admin >>>> Creating database [plocal:/tmp/foodb] using the storage type [plocal]... >>>> Database created successfully. >>>> Current database is: plocal:/tmp/foodb >>>> orientdb {db=foodb}> >>>> orientdb {db=foodb}> create class MyV extends V >>>> Class created successfully. Total classes in database now: 11 >>>> >>> >>> >>> change the path to something that makes sense for you. >>> configure rexster to see that database. >>> >>> create a model in python code: >>> >>> from bulbs.model import Node >>>> class MyV(Node): >>>> element_type = "myv" >>> >>> >>> >>> get a bulbs graph object from rexster somehow (I'll use the name "g") >>> use add_proxy so that the bulbs graph object g knows about your models: >>> >>> g.add_proxy("myv", MyV) >>> >>> >>> 20:51:31 In [38]: g.vertices.create({"element_type":"myv", >>>> "@class":"MyV", "myid":1}) >>>> 20:51:55Out [38]: <MyV: http://localhost:8182/graphs/v2/vertices/#11:4> >>> >>> >>> >>> checking back on console: >>> >>>> >>>> orientdb> connect remote:localhost/foodb admin admin >>>> Connecting to database [remote:localhost/foodb] with user 'admin'...OK >>>> orientdb {db=foodb}> select from V where myid = 1 >>>> ----+-----+------+----+------------ >>>> # |@RID |@CLASS|myid|element_type >>>> ----+-----+------+----+------------ >>>> 0 |#11:4|MyV |1 |myv >>>> ----+-----+------+----+------------ >>> >>> >>> >>> On Tuesday, April 21, 2015 at 7:00:17 PM UTC-7, Kevin I wrote: >>>> >>>> Ok! I tried `@CLASS` instead of `@class` and it didn't show up any >>>> error. But even now, the new vertices do not have the value `MyV` but `V`. >>>> >>>> I mean, I did `@CLASS = MyV` but after creation, if I see the vertices >>>> via rexster, all those records have `@CLASS = V`. >>>> >>>> I even tried `_type = myv` and `_type = MyV` but the same problem. This >>>> is depressing. Any solution? >>>> >>>> Thanks. >>>> >>>> On Wed, Apr 22, 2015 at 7:15 AM, Kevin I <[email protected]> wrote: >>>> >>>>> Thanks kyle! >>>>> >>>>> Unfortunately, when I try to create the property `@class` like this : >>>>> >>>>> `data = {"@class":"MyV","ovgid":"test1", "element_type":"MyV"}`, >>>>> >>>>> I get the following error: >>>>> >>>>> ` >>>>> SystemError: ({'status': '500', 'transfer-encoding': 'chunked', >>>>> 'server': 'grizzly/2.2.16', 'connection': 'close', 'date': 'Wed, 22 Apr >>>>> 2015 07:09:12 GMT', 'access-control-allow-origin': '*', 'content-type': >>>>> 'application/json'}, >>>>> '{"message":"","error":"javax.script.ScriptException: >>>>> com.orientechnologies.orient.core.exception.OSchemaException: Cannot >>>>> change >>>>> the schema while a transaction is active. Schema changes are not >>>>> transactional","api":{"description":"evaluate an ad-hoc Gremlin script >>>>> for >>>>> a graph.","parameters":{"returnTotal":"when set to true, the full result >>>>> set will be iterated and the results returned (default is >>>>> false)","rexster.returnKeys":"an array of element property keys to return >>>>> (default is to return all element >>>>> properties)","rexster.showTypes":"displays the properties of the elements >>>>> with their native data type (default is false)","load":"a list of >>>>> \'stored >>>>> procedures\' to execute prior to the \'script\' (if \'script\' is not >>>>> specified then the last script in this argument will return the >>>>> values","rexster.offset.end":"end index for a paged set of data to be >>>>> returned","rexster.offset.start":"start index for a paged set of data to >>>>> be >>>>> returned","params":"a map of parameters to bind to the script >>>>> engine","language":"the gremlin language flavor to use (default is >>>>> groovy)","script":"the Gremlin script to be >>>>> evaluated"}},"success":false}') >>>>> >>>>> ` >>>>> >>>>> But, if I change `@class` to something else, it works. Any solution? >>>>> >>>>> And also what is that `ovgid` property? >>>>> >>>>> On Tue, Apr 21, 2015 at 11:35 PM, Kyle <[email protected]> wrote: >>>>> >>>>>> You are right, >>>>>> >>>>>> select from MyV set element_name = "myv" >>>>>> >>>>>> >>>>>> should be >>>>>> >>>>>> update MyV set element_name = "myv" >>>>>> >>>>>> >>>>>> sorry. >>>>>> >>>>>> From within bulbs you can create a vertex of type "MyV" by doing >>>>>> >>>>>> >>>>>> In [9]: data = {"@class":"MyV","ovgid":"test1", "element_type":"MyV"} >>>>>>> In [10]: v=g.vertices.create(data) >>>>>> >>>>>> >>>>>> >>>>>> On Tuesday, April 21, 2015 at 10:37:52 AM UTC-7, Kevin I wrote: >>>>>>> >>>>>>> @kyle, >>>>>>> >>>>>>> Sorry to get back so late. I can't quite wrap my head around this. >>>>>>> From what you've said and I understand from the docs and from fiddling >>>>>>> with >>>>>>> the console, this is what I've understood: >>>>>>> >>>>>>> 1. In orientdb, all classes are identified with the `@CLASS` >>>>>>> property just like the classes in Bulbs are identified with >>>>>>> `element_type` >>>>>>> property. >>>>>>> 2. A Class cannot be changed in orientdb, once it is created. >>>>>>> >>>>>>> I have the following classes in Bulbs for example : >>>>>>> Student, Staff, Subject, Branch >>>>>>> >>>>>>> Now, I need to create lucene indexes for which I cannot use Bulbs. >>>>>>> So, I get into the Orientdb console. As you said, I tried creating the >>>>>>> class `Student` in orientdb too, like this: >>>>>>> >>>>>>> `create class Student extends V` >>>>>>> >>>>>>> But, still all the above 4 bulbs class type objects are shown as `V` >>>>>>> objects in orientdb. ie. the number of `Student` records in orientDB is >>>>>>> 0. >>>>>>> >>>>>>> So, in short, what I want to do is to convert the `V` type records >>>>>>> to the `Student`, `Staff`, `Subject` and `Branch` type records in >>>>>>> OrientDB, >>>>>>> so that I can create indices in Lucene for my search module. >>>>>>> >>>>>>> Also, I tried your command : >>>>>>> `select from MyV set element_name = "myv"` >>>>>>> but it throwed a syntax error. >>>>>>> >>>>>>> Thank you for your help so far. Looking ahead for your reply! >>>>>>> >>>>>>> On Wed, Apr 15, 2015 at 11:58 PM, <[email protected]> wrote: >>>>>>> >>>>>>>> <class-name> refers to classes defined in Orientdb. >>>>>>>> >>>>>>>> http://orientdb.com/docs/last/orientdb.wiki/Tutorial-Classes.html >>>>>>>> >>>>>>>> Useful default classes are "V" for vertices, and "E" for edges. >>>>>>>> >>>>>>>> You can define a new classes like: >>>>>>>> >>>>>>>> create class MyV extends V >>>>>>>> create class MyE extends E >>>>>>>> >>>>>>>> you can do >>>>>>>> >>>>>>>> create property V.element_name STRING >>>>>>>> select from MyV set element_name = "myv" >>>>>>>> >>>>>>>> (all above are osql console commands) >>>>>>>> to create an element name property, and populate all records of >>>>>>>> that class with a string representing that property (this relates to >>>>>>>> what I >>>>>>>> mentioned before about not seeing any way to access the "@class" field >>>>>>>> in >>>>>>>> bulbs). >>>>>>>> >>>>>>>> You can now create bulbs model classes that correspond to the >>>>>>>> classes in Orientdb itself. "element_name" is the default field name >>>>>>>> to >>>>>>>> associate graphdb records with bulbs python model classes, it can be >>>>>>>> changed if something else works better for you. >>>>>>>> >>>>>>>> >>>>>>>> On Tuesday, April 14, 2015 at 9:05:33 PM UTC-7, Kevin I wrote: >>>>>>>>> >>>>>>>>> Thank you very much ky...! I've installed pyorient. >>>>>>>>> >>>>>>>>> But now, what is this class name here : >>>>>>>>> >>>>>>>>> CREATE INDEX <name> ON <class-name> (prop-names) FULLTEXT ENGINE >>>>>>>>> LUCENE >>>>>>>>> >>>>>>>>> >>>>>>>>> as found in this wiki here >>>>>>>>> <https://github.com/orientechnologies/orientdb-lucene/wiki/Full-Text-Index>? >>>>>>>>> >>>>>>>>> I tried using the Bulbs model class name and obviously it didn't >>>>>>>>> work. Do I >>>>>>>>> have to define separate classes for this? If so, can you please show >>>>>>>>> how to >>>>>>>>> do it? >>>>>>>>> >>>>>>>>> Thanks! >>>>>>>>> >>>>>>>>> >>>>>>>>> On Wednesday, April 15, 2015 at 12:13:11 AM UTC+5:30, >>>>>>>>> [email protected] wrote: >>>>>>>>>> >>>>>>>>>> I'm pretty certain you can't create these fancy orientdb indices >>>>>>>>>> via bulbs. >>>>>>>>>> >>>>>>>>>> ---- >>>>>>>>>> This open issue is about adding support to directly talk to >>>>>>>>>> orientdb via the REST api. >>>>>>>>>> https://github.com/espeed/bulbs/issues/128 >>>>>>>>>> I'd very much like this feature! >>>>>>>>>> >>>>>>>>>> ---- >>>>>>>>>> you can use pyorient to talk to orientdb in python: >>>>>>>>>> https://github.com/mogui/pyorient >>>>>>>>>> >>>>>>>>>> ---- >>>>>>>>>> >>>>>>>>>> Additionally, there are serialization issues with custom orientdb >>>>>>>>>> stuff. >>>>>>>>>> >>>>>>>>>> e.g, a list of >>>>>>>>>> EMBEDDED SETS/LISTS get serialized as: >>>>>>>>>> u'kind': u'[tv_tv_program, film_film]' >>>>>>>>>> >>>>>>>>>> I've noticed DATE fields getting serialized as: >>>>>>>>>> u'modified': u'Wed Apr 01 15:58:46 PDT 2015', >>>>>>>>>> which can cause problems (e.g, schema violation when not turned >>>>>>>>>> back into date) when trying to save via bulbs >>>>>>>>>> >>>>>>>>>> LINKLIST/SET properties are serialized as >>>>>>>>>> u'cast': >>>>>>>>>> u'com.tinkerpop.blueprints.impls.orient.OrientElementIterable@3949de91', >>>>>>>>>> which is completely unworkable. The only workaround I know is >>>>>>>>>> judicious use of server side gremlin scripts. >>>>>>>>>> >>>>>>>>>> Bulbs doesn't seem to have access to the "@class" property so you >>>>>>>>>> can't know the class of a record without adding another field to >>>>>>>>>> record >>>>>>>>>> that, I think this is a problem at the rexster level though I am >>>>>>>>>> unsure. >>>>>>>>>> >>>>>>>>>> The date and embedded set/list problems can easily be fixed by >>>>>>>>>> subclassing the Property class in >>>>>>>>>> https://github.com/espeed/bulbs/blob/master/bulbs/property.py >>>>>>>>>> and creating custom conversion to/from python/orientdb. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Tuesday, April 14, 2015 at 8:33:15 AM UTC-7, Kevin I wrote: >>>>>>>>>>> >>>>>>>>>>> I just realized that I'm trying to interpret the SQL query with >>>>>>>>>>> the Gremlin interpreter. >>>>>>>>>>> >>>>>>>>>>> Still I don't know how to execute it. >>>>>>>>>>> >>>>>>>>>>> On Tuesday, April 14, 2015 at 9:01:17 PM UTC+5:30, Kevin I wrote: >>>>>>>>>>>> >>>>>>>>>>>> I have the Lucene index plugin installed and active. I just >>>>>>>>>>>> can't figure out how to create indices. I tried this: >>>>>>>>>>>> >>>>>>>>>>>> g.gremlin.execute('create index Student.name on Student (name) >>>>>>>>>>>> fulltext engine lucene') >>>>>>>>>>>> >>>>>>>>>>>> but it doesn't work. Returns the following error: >>>>>>>>>>>> >>>>>>>>>>>> SystemError: ({'status': '500', 'transfer-encoding': 'chunked', >>>>>>>>>>>> 'server': 'grizzly/2.2.16', 'connection': 'close', 'date': 'Tue, >>>>>>>>>>>> 14 Apr 2015 20:54:50 GMT', 'access-control-allow-origin': '*', >>>>>>>>>>>> 'content-type': 'application/json'}, >>>>>>>>>>>> '{"message":"","error":"javax.script.ScriptException: >>>>>>>>>>>> groovy.lang.MissingPropertyException: No such property: index for >>>>>>>>>>>> class: >>>>>>>>>>>> Script5","api":{"description":"evaluate an ad-hoc Gremlin script >>>>>>>>>>>> for a >>>>>>>>>>>> graph.","parameters":{"returnTotal":"when set to true, the full >>>>>>>>>>>> result set >>>>>>>>>>>> will be iterated and the results returned (default is >>>>>>>>>>>> false)","rexster.returnKeys":"an array of element property keys to >>>>>>>>>>>> return >>>>>>>>>>>> (default is to return all element >>>>>>>>>>>> properties)","rexster.showTypes":"displays the properties of the >>>>>>>>>>>> elements >>>>>>>>>>>> with their native data type (default is false)","load":"a list of >>>>>>>>>>>> \'stored >>>>>>>>>>>> procedures\' to execute prior to the \'script\' (if \'script\' is >>>>>>>>>>>> not >>>>>>>>>>>> specified then the last script in this argument will return the >>>>>>>>>>>> values","rexster.offset.end":"end index for a paged set of data to >>>>>>>>>>>> be >>>>>>>>>>>> returned","rexster.offset.start":"start index for a paged set of >>>>>>>>>>>> data to be >>>>>>>>>>>> returned","params":"a map of parameters to bind to the script >>>>>>>>>>>> engine","language":"the gremlin language flavor to use (default is >>>>>>>>>>>> groovy)","script":"the Gremlin script to be >>>>>>>>>>>> evaluated"}},"success":false}' >>>>>>>>>>>> ) >>>>>>>>>>>> >>>>>>>>>>>> What am I missing here? >>>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>> >>>>>>>> --- >>>>>>>> You received this message because you are subscribed to a topic in >>>>>>>> the Google Groups "OrientDB" group. >>>>>>>> To unsubscribe from this topic, visit >>>>>>>> https://groups.google.com/d/topic/orient-database/Oi34bWhARAU/unsubscribe >>>>>>>> . >>>>>>>> To unsubscribe from this group and all its topics, send an email to >>>>>>>> [email protected]. >>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Always remember that the world around you is made by people that are >>>>>>> no smarter than you and me. >>>>>>> >>>>>> -- >>>>>> >>>>>> --- >>>>>> You received this message because you are subscribed to a topic in >>>>>> the Google Groups "OrientDB" group. >>>>>> To unsubscribe from this topic, visit >>>>>> https://groups.google.com/d/topic/orient-database/Oi34bWhARAU/unsubscribe >>>>>> . >>>>>> To unsubscribe from this group and all its topics, send an email to >>>>>> [email protected]. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Always remember that the world around you is made by people that are >>>>> no smarter than you and me. >>>>> >>>> >>>> >>>> >>>> -- >>>> Always remember that the world around you is made by people that are no >>>> smarter than you and me. >>>> >>> -- >>> >>> --- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "OrientDB" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/orient-database/Oi34bWhARAU/unsubscribe >>> . >>> To unsubscribe from this group and all its topics, send an email to >>> [email protected] <javascript:>. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> Always remember that the world around you is made by people that are no >> smarter than you and me. >> > > > > -- > Always remember that the world around you is made by people that are no > smarter than you and me. > -- --- You received this message because you are subscribed to the Google Groups "OrientDB" 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.
