Giter Club home page Giter Club logo

brackit's People

Contributors

caetanosauer avatar sebbae avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

brackit's Issues

Xml processing

Hey, sorry to bother you...I am currently working on BrackitMR to process the XML document. But as you mentioned..." doc" function is working(able to access a single XML document) but "Collection" function is not working (not able to access multiple XML doc. using collection ).
Please help me out...

Rewrite rules for indexes

Hi Sebastian, if you ever look at this (last time it was incredibly fast ;)), can you give me some tips how to implement rewrite rules for index accesses? :-) I think I asked like 6 years ago, but couldn't find the mails, maybe I've used my university email address back then.

And regarding the usage of JSON, maybe in the near future I'd have to make an interface for providing my own implementation of arrays and objects (but that should be relatively easy).

Thanks for your impressive work :-)

Hey Sebastian,

at least I'm not getting a lot of customer success stories in my day to day software engineering Job (sometimes support issues, though :-D), so I simply wanted to say thanks for your impressive work :-)

I think queries like these are going to get really cool:

let $statuses := jn:open('mycol.jn','mydoc.jn', xs:dateTime('2019-04-13T16:24:27Z'))=>statuses
let $foundStatus := for $status in bit:array-values($statuses)
  let $dateTimeCreated := xs:dateTime($status=>created_at)
  where $dateTimeCreated > xs:dateTime("2018-02-01T00:00:00") and not(exists(jn:previous($status)))
  order by $dateTimeCreated
  return $status
return {"revision": sdb:revision($foundStatus), $foundStatus{text}}

I think I just scratched the surface of what's possible with Brackit, regarding storage optimizations (for the XML stuff I rewrite queries based on the path summary, but I'm going the other way as records/nodes in Sirix are not necessarily clustered, so I try to rewrite as in BaseX descendant steps to specific child steps to get the most selective query). And for the JSON stuff basically I did nothing as of now, but I guess I'll finally release a new version (0.9) of Sirix and publish the stuff on Hacker News. Maybe, finally I'm getting contributions, when I show what's really possible and from moving away from only storing XML ;)

So, just wanted to say thanks for your great work, and yay, I really hope for contributions in the future and some users, that'd be amazing :-)

kind regards
Johannes

Unix epoch seconds

Hi Sebastian,

I'm still using your awesome Ph.D. project for my own "playground" it seems :-)

As described here:
https://stackoverflow.com/questions/7482347/is-there-any-way-in-xquery-to-get-the-current-time-in-milliseconds-since-some-ep/7484211

I want to get the milliseconds since 1970-01-01.
(current-dateTime() - xs:dateTime("1970-01-01T00:00:00-00:00")) div xs:dayTimeDuration('PT0.001S')

Expected output would be an xs:integer/xs:long I guess as for instance with ExistDB:
https://exist-db.org/exist/apps/eXide/index.html

The output however is a double, something along the lines: 1.474685673277E12

or as a function-parameter something like: 1474686553674 (casted to long/int64): Sat Sep 24 2016 03:09:13 and not end of April 2018.

I'm using it because I want to provide a simple function for opening a specific revision, which has been committed at the closest time to the given point in time:

  @Override
  public Sequence execute(final StaticContext sctx, final QueryContext ctx, final Sequence[] args)
      throws QueryException {
    if (args.length < 3 || args.length > 4) {
      throw new QueryException(new QNm("No valid arguments specified!"));
    }
    final DBCollection col = (DBCollection) ctx.getStore().lookup(((Str) args[0]).stringValue());

    if (col == null) {
      throw new QueryException(new QNm("No valid arguments specified!"));
    }

    final String expResName = ((Str) args[1]).stringValue();
    final long time =
        FunUtil.getLong(args, 2, "pointInTime", System.currentTimeMillis(), null, true);
    final Instant pointInTime = Instant.ofEpochMilli(time);
    final boolean updatable = FunUtil.getBoolean(args, 3, "updatable", false, false);

    return col.getDocument(pointInTime, expResName, updatable);
  }

Bug in XQuery Update / rename expression

Hi Sebastian,

there seems to be a bug in the rename node expression:

let $doc := sdb:doc('path1','shredded', 1)
return (
replace node sdb:select-node($doc, 4) with ,
rename node sdb:select-node($doc, 15) as row,
insert node attribute Value { 12 } into sdb:select-node($doc,15),
delete nodes sdb:select-node($doc, 19),
replace value of node sdb:select-node($doc, 16) with "MUELLER",
replace value of node sdb:select-node($doc, 20) with "2600,00",
rename node sdb:select-node($doc, 27) as row,
replace value of node sdb:select-node($doc, 32) with "2800,00",
rename node sdb:select-node($doc, 33) as row,
insert node attribute Value { 15 } into sdb:select-node($doc,33),
delete nodes sdb:select-node($doc, 37)
)

org.brackit.xquery.QueryException: err:XPDY0002: Dynamic context variable fs:dot is not assigned a value
at org.brackit.xquery.expr.DefaultCtxItem.evaluateToItem(DefaultCtxItem.java:95)
at org.brackit.xquery.expr.DefaultCtxItem.evaluate(DefaultCtxItem.java:78)
at org.brackit.xquery.expr.StepExpr.evaluate(StepExpr.java:69)
at org.brackit.xquery.expr.StepExpr.evaluateToItem(StepExpr.java:190)
at org.brackit.xquery.update.Rename.evaluateToItem(Rename.java:117)
at org.brackit.xquery.update.Rename.evaluate(Rename.java:69)
at org.brackit.xquery.expr.SequenceExpr$EvalSequence.sequence(SequenceExpr.java:69)
at org.brackit.xquery.sequence.FlatteningSequence$FlatteningIter.next(FlatteningSequence.java:64)
at org.brackit.xquery.sequence.FlatteningSequence$FlatteningIter.next(FlatteningSequence.java:56)
at org.brackit.xquery.expr.PipeExpr$PipeSequence$1.next(PipeExpr.java:81)
at org.brackit.xquery.XQuery.run(XQuery.java:90)
at org.brackit.xquery.XQuery.execute(XQuery.java:69)

I think the step expression might not be right, but I don't really know.

Array method to access all values as sequences

Hi Sebastian,

I think I'd add a simple XQuery function to retrieve all values from an array and add a List values() method in the interface I guess. Just playing around and learning XQuery along the way I have to admit :-D

let $statuses := jn:doc('mycol.jn','mydoc.jn')=>statuses
let $foundStatus := for $i in (0 to bit:len($statuses) - 1)
  let $status := $statuses[[$i]]
  let $dateTimeCreated := xs:dateTime($status=>created_at)
  where $dateTimeCreated > xs:dateTime("2018-02-01T00:00:00")
  order by $dateTimeCreated
  return $status
return $foundStatus

It's a bit ugly to iterate over arrays I think ($statuses is an array) and this was the only way I could come up to retrieve all values from the array. I envision a function like bit:array-values(...).

Oh and I had to change the date-time format in my example JSON file from twitter. I'd probably add the new XQuery 3.1 function fn:parse-ietf-date when I have time (https://stackoverflow.com/questions/55647635/converting-a-string-to-an-xsdatetime/55647808#55647808) :-)

Now I can add my temporal query stuff on top and iterate over all the versions of the statuses array or open a specific revision with jn:doc and so on :-)

Refactor Brackit to use Java 13/14 or even Kotlin

Hi Sebastian,

I think I'm going to change Brackit and might gradually switch to Kotlin for my "fork": https://github.com/sirixdb/brackit

Maybe I'll find other motivated open source committers to work on the project, as it seems that after all the years SirixDB get's some more traction and PRs :-) just wanted to let you know, plus I'd love to investigate how to best distribute queries in a cloud environment for instance with a distributed log as for instance Apache Kafka.

kind regards
Johannes

Bug in replace operation

Hi Sebastian,

Some time ago I discovered a bug in the replace operation, I think because of adjacent text-node merges if I remember correctly:

sirixdb/brackit@c6438ec

Hope that fixed it. In general maybe I could merge my stuff back (you could have a look at it), because I extended Brackit with temporal XPath axis and a few additional interfaces to open resources in different revisions for temporal storage backends.

Kind regards
Johannes

JSON syntax

Hi Sebastian,

I have to debug the parser further, but currently I wonder what's the difference between an intermediate array variable and breaking record-fields access / accessing an array index into two steps:

let $arr := jn:doc('mycol.jn','mydoc.jn')=>sirix return $arr[[0]]

The above query is working but not this one:

jn:doc('mycol.jn','mydoc.jn')=>sirix[[0]]

Furthermore can I simply use predicates as in XPath? I maybe want to change the Syntax to JSONiq in my fork, but still would love to contribute my whole fork back to yours :-)

kind regards
Johannes

Brackit enhancements

Hi Sebastian,

I'm still working actively from time to time on Brackit (https://github.com/sirixdb/brackit). I guess you won't have time, to work on the project currently, but any contributions are of course highly welcome ;-)

I've managed to change some JSON stuff to be more in-line with JSONiq (mainly the extended XDM) but left other stuff, which IMHO is better (as for instance the => operator). I'll add another ==> operator and have a look if I could switch to a better syntax if we don't need the XML specific stuff, when querying only JSON data.

Furthermore I've added a bunch of temporal enhancements (for SirixDB or other evolutionary, temporal data stores). Recently I've added array slices as in Python.

I wonder if I could get brackit.org. In the long-run I hope I can find some users and sponsors for both Brackit and SirixDB to work more on the projects as I really like the ideas (even though now it might make more sense to query JSON document stores as XML seems to have quiet some negative conotation in the public -- so I'm concentrating on query enhancements for JSON).

I've also managed to implement first query rewrites for CAS, Path and Name indexes in SirixDB ๐Ÿ‘

If you ever read this we could also talk via Slack or Jitsi or E-Mail?

kind regards
Johannes

JSON with a database storage backend

Hey Sebastian, sorry to bother you all the time, but maybe you can also give a good tip how you'd implement a binding for a native JSON storage backend. I'm currently finishing the work on a temporal JSON storage layer besides XML for my open source project (http://sirix.io) and would like to also use Brackit. Maybe I could also implement the interfaces you already provide (should be basically the same as for my XDM node transactions) and then implement some functions for opening a JSON resource...

Basically my JSON node layer looks like the one in Marklogic:
https://docs.marklogic.com/guide/app-dev/json

XQuery Update statement

Hi Sebastian,

I have an XQuery Update statement as follows. I think I have two problems. Do you know how I can bind namespace prefixes?

And second I'm getting the exception:
org.brackit.xquery.QueryException: err:XPDY0002: Dynamic context variable fs:dot is not assigned a value
at org.brackit.xquery.expr.DefaultCtxItem.evaluateToItem(DefaultCtxItem.java:95)
at org.brackit.xquery.expr.DefaultCtxItem.evaluate(DefaultCtxItem.java:78)

after commenting

// throw new QueryException(ErrorCode.ERR_UNDEFINED_NAMESPACE_PREFIX,
// "Undefined namespace prefix: '%s'", prefix);

in AbstractAnalyser.

let $doc := sdb:doc('path1','shredded', 1)
return (
rename node sdb:select-node($doc, 1) as ,
delete nodes sdb:select-node($doc, 6),
delete nodes sdb:select-node($doc, 7),
insert node attribute mc:Ignorable { x14ac } into sdb:select-node($doc,1),
rename node sdb:select-node($doc, 22) as ,
rename node sdb:select-node($doc, 23) as ,
insert node attribute width { 5 } into sdb:select-node($doc,23),
insert node attribute bestFit { 1 } into sdb:select-node($doc,23),
delete nodes sdb:select-node($doc, 23),
delete nodes sdb:select-node($doc, 23),
delete nodes sdb:select-node($doc, 23),
delete nodes sdb:select-node($doc, 27),
insert node attribute customWidth { 1 } into sdb:select-node($doc,74),
insert node attribute min { 2 } into sdb:select-node($doc,74),
insert node attribute max { 2 } into sdb:select-node($doc,74),
insert node attribute width { 19.85546875 } into sdb:select-node($doc,74),
insert node attribute bestFit { 1 } into sdb:select-node($doc,74),
delete nodes sdb:select-node($doc, 27),
delete nodes sdb:select-node($doc, 27),
delete nodes sdb:select-node($doc, 27),
delete nodes sdb:select-node($doc, 33),
insert node attribute customWidth { 1 } into sdb:select-node($doc,74),
insert node attribute min { 2 } into sdb:select-node($doc,74),
insert node attribute max { 2 } into sdb:select-node($doc,74),
insert node attribute width { 19.85546875 } into sdb:select-node($doc,74),
insert node attribute bestFit { 1 } into sdb:select-node($doc,74),
delete nodes sdb:select-node($doc, 33),
delete nodes sdb:select-node($doc, 33),
delete nodes sdb:select-node($doc, 33),
delete nodes sdb:select-node($doc, 39),
insert node attribute customWidth { 1 } into sdb:select-node($doc,74),
insert node attribute min { 2 } into sdb:select-node($doc,74),
insert node attribute max { 2 } into sdb:select-node($doc,74),
insert node attribute width { 19.85546875 } into sdb:select-node($doc,74),
insert node attribute bestFit { 1 } into sdb:select-node($doc,74),
delete nodes sdb:select-node($doc, 39),
delete nodes sdb:select-node($doc, 39),
delete nodes sdb:select-node($doc, 39),
delete nodes sdb:select-node($doc, 45),
insert node attribute customWidth { 1 } into sdb:select-node($doc,74),
insert node attribute min { 2 } into sdb:select-node($doc,74),
insert node attribute max { 2 } into sdb:select-node($doc,74),
insert node attribute width { 19.85546875 } into sdb:select-node($doc,74),
insert node attribute bestFit { 1 } into sdb:select-node($doc,74),
delete nodes sdb:select-node($doc, 45),
delete nodes sdb:select-node($doc, 45),
delete nodes sdb:select-node($doc, 45),
delete nodes sdb:select-node($doc, 51),
insert node attribute customWidth { 1 } into sdb:select-node($doc,74),
insert node attribute min { 2 } into sdb:select-node($doc,74),
insert node attribute max { 2 } into sdb:select-node($doc,74),
insert node attribute width { 19.85546875 } into sdb:select-node($doc,74),
insert node attribute bestFit { 1 } into sdb:select-node($doc,74),
delete nodes sdb:select-node($doc, 51),
delete nodes sdb:select-node($doc, 51),
delete nodes sdb:select-node($doc, 51),
delete nodes sdb:select-node($doc, 57),
insert node attribute customWidth { 1 } into sdb:select-node($doc,74),
insert node attribute min { 2 } into sdb:select-node($doc,74),
insert node attribute max { 2 } into sdb:select-node($doc,74),
insert node attribute width { 19.85546875 } into sdb:select-node($doc,74),
insert node attribute bestFit { 1 } into sdb:select-node($doc,74),
delete nodes sdb:select-node($doc, 57),
delete nodes sdb:select-node($doc, 57),
delete nodes sdb:select-node($doc, 57),
delete nodes sdb:select-node($doc, 63),
insert node attribute customWidth { 1 } into sdb:select-node($doc,74),
insert node attribute min { 2 } into sdb:select-node($doc,74),
insert node attribute max { 2 } into sdb:select-node($doc,74),
insert node attribute width { 19.85546875 } into sdb:select-node($doc,74),
insert node attribute bestFit { 1 } into sdb:select-node($doc,74),
delete nodes sdb:select-node($doc, 63),
delete nodes sdb:select-node($doc, 63),
delete nodes sdb:select-node($doc, 63),
delete nodes sdb:select-node($doc, 69),
insert node attribute customWidth { 1 } into sdb:select-node($doc,74),
insert node attribute min { 2 } into sdb:select-node($doc,74),
insert node attribute max { 2 } into sdb:select-node($doc,74),
insert node attribute width { 19.85546875 } into sdb:select-node($doc,74),
insert node attribute bestFit { 1 } into sdb:select-node($doc,74),
delete nodes sdb:select-node($doc, 69),
delete nodes sdb:select-node($doc, 69),
rename node sdb:select-node($doc, 74) as ,
insert node attribute width { 19.85546875 } into sdb:select-node($doc,74),
insert node attribute bestFit { 1 } into sdb:select-node($doc,74),
delete nodes sdb:select-node($doc, 74),
delete nodes sdb:select-node($doc, 74),
delete nodes sdb:select-node($doc, 74),
delete nodes sdb:select-node($doc, 78),
delete nodes sdb:select-node($doc, 78),
delete nodes sdb:select-node($doc, 78),
delete nodes sdb:select-node($doc, 83),
delete nodes sdb:select-node($doc, 83),
delete nodes sdb:select-node($doc, 83),
delete nodes sdb:select-node($doc, 88),
delete nodes sdb:select-node($doc, 88),
delete nodes sdb:select-node($doc, 88),
delete nodes sdb:select-node($doc, 88),
delete nodes sdb:select-node($doc, 94),
delete nodes sdb:select-node($doc, 94),
delete nodes sdb:select-node($doc, 94),
delete nodes sdb:select-node($doc, 94),
delete nodes sdb:select-node($doc, 100),
delete nodes sdb:select-node($doc, 100),
delete nodes sdb:select-node($doc, 100),
delete nodes sdb:select-node($doc, 100),
delete nodes sdb:select-node($doc, 106),
delete nodes sdb:select-node($doc, 106),
delete nodes sdb:select-node($doc, 106),
delete nodes sdb:select-node($doc, 111),
delete nodes sdb:select-node($doc, 111),
delete nodes sdb:select-node($doc, 111),
delete nodes sdb:select-node($doc, 118),
delete nodes sdb:select-node($doc, 118),
delete nodes sdb:select-node($doc, 118),
delete nodes sdb:select-node($doc, 118),
delete nodes sdb:select-node($doc, 124),
delete nodes sdb:select-node($doc, 124),
delete nodes sdb:select-node($doc, 124),
delete nodes sdb:select-node($doc, 124),
delete nodes sdb:select-node($doc, 171),
delete nodes sdb:select-node($doc, 171),
delete nodes sdb:select-node($doc, 171),
delete nodes sdb:select-node($doc, 171),
delete nodes sdb:select-node($doc, 216),
delete nodes sdb:select-node($doc, 216),
delete nodes sdb:select-node($doc, 216),
delete nodes sdb:select-node($doc, 216),
delete nodes sdb:select-node($doc, 261),
delete nodes sdb:select-node($doc, 261),
delete nodes sdb:select-node($doc, 261),
delete nodes sdb:select-node($doc, 261),
delete nodes sdb:select-node($doc, 306),
delete nodes sdb:select-node($doc, 306),
delete nodes sdb:select-node($doc, 306),
delete nodes sdb:select-node($doc, 306),
delete nodes sdb:select-node($doc, 351),
delete nodes sdb:select-node($doc, 351),
delete nodes sdb:select-node($doc, 351),
delete nodes sdb:select-node($doc, 351),
delete nodes sdb:select-node($doc, 396),
delete nodes sdb:select-node($doc, 396),
delete nodes sdb:select-node($doc, 396),
delete nodes sdb:select-node($doc, 396),
delete nodes sdb:select-node($doc, 441),
delete nodes sdb:select-node($doc, 441),
delete nodes sdb:select-node($doc, 441),
delete nodes sdb:select-node($doc, 441),
delete nodes sdb:select-node($doc, 486),
delete nodes sdb:select-node($doc, 486),
delete nodes sdb:select-node($doc, 486),
delete nodes sdb:select-node($doc, 486),
delete nodes sdb:select-node($doc, 531),
delete nodes sdb:select-node($doc, 531),
delete nodes sdb:select-node($doc, 531),
delete nodes sdb:select-node($doc, 531),
delete nodes sdb:select-node($doc, 576),
delete nodes sdb:select-node($doc, 576),
delete nodes sdb:select-node($doc, 576),
delete nodes sdb:select-node($doc, 576),
delete nodes sdb:select-node($doc, 621),
delete nodes sdb:select-node($doc, 621),
delete nodes sdb:select-node($doc, 621),
delete nodes sdb:select-node($doc, 621),
delete nodes sdb:select-node($doc, 666),
delete nodes sdb:select-node($doc, 666),
delete nodes sdb:select-node($doc, 666),
delete nodes sdb:select-node($doc, 666),
delete nodes sdb:select-node($doc, 711),
delete nodes sdb:select-node($doc, 711),
delete nodes sdb:select-node($doc, 711),
delete nodes sdb:select-node($doc, 711),
delete nodes sdb:select-node($doc, 756),
delete nodes sdb:select-node($doc, 756),
delete nodes sdb:select-node($doc, 756),
delete nodes sdb:select-node($doc, 756),
delete nodes sdb:select-node($doc, 801),
delete nodes sdb:select-node($doc, 801),
delete nodes sdb:select-node($doc, 801),
delete nodes sdb:select-node($doc, 801),
delete nodes sdb:select-node($doc, 846),
delete nodes sdb:select-node($doc, 846),
delete nodes sdb:select-node($doc, 846),
delete nodes sdb:select-node($doc, 846),
delete nodes sdb:select-node($doc, 891),
delete nodes sdb:select-node($doc, 891),
delete nodes sdb:select-node($doc, 891),
delete nodes sdb:select-node($doc, 891),
delete nodes sdb:select-node($doc, 935),
delete nodes sdb:select-node($doc, 935),
delete nodes sdb:select-node($doc, 935),
delete nodes sdb:select-node($doc, 935),
delete nodes sdb:select-node($doc, 980),
delete nodes sdb:select-node($doc, 980),
delete nodes sdb:select-node($doc, 980),
delete nodes sdb:select-node($doc, 980),
delete nodes sdb:select-node($doc, 1025),
delete nodes sdb:select-node($doc, 1025),
delete nodes sdb:select-node($doc, 1025),
delete nodes sdb:select-node($doc, 1025),
delete nodes sdb:select-node($doc, 1070),
delete nodes sdb:select-node($doc, 1070),
delete nodes sdb:select-node($doc, 1070),
delete nodes sdb:select-node($doc, 1070),
delete nodes sdb:select-node($doc, 1115),
delete nodes sdb:select-node($doc, 1115),
delete nodes sdb:select-node($doc, 1115),
delete nodes sdb:select-node($doc, 1115),
delete nodes sdb:select-node($doc, 1160),
delete nodes sdb:select-node($doc, 1160),
delete nodes sdb:select-node($doc, 1160),
delete nodes sdb:select-node($doc, 1160),
delete nodes sdb:select-node($doc, 1205),
delete nodes sdb:select-node($doc, 1205),
delete nodes sdb:select-node($doc, 1205),
delete nodes sdb:select-node($doc, 1205),
delete nodes sdb:select-node($doc, 1250),
delete nodes sdb:select-node($doc, 1250),
delete nodes sdb:select-node($doc, 1250),
delete nodes sdb:select-node($doc, 1250),
delete nodes sdb:select-node($doc, 1295),
delete nodes sdb:select-node($doc, 1295),
delete nodes sdb:select-node($doc, 1295),
delete nodes sdb:select-node($doc, 1295),
delete nodes sdb:select-node($doc, 1340),
delete nodes sdb:select-node($doc, 1340),
delete nodes sdb:select-node($doc, 1340),
delete nodes sdb:select-node($doc, 1340),
delete nodes sdb:select-node($doc, 1385),
delete nodes sdb:select-node($doc, 1385),
delete nodes sdb:select-node($doc, 1385),
delete nodes sdb:select-node($doc, 1385),
delete nodes sdb:select-node($doc, 1430),
delete nodes sdb:select-node($doc, 1430),
delete nodes sdb:select-node($doc, 1430),
delete nodes sdb:select-node($doc, 1430),
delete nodes sdb:select-node($doc, 1475),
delete nodes sdb:select-node($doc, 1475),
delete nodes sdb:select-node($doc, 1475),
delete nodes sdb:select-node($doc, 1475),
delete nodes sdb:select-node($doc, 1520),
delete nodes sdb:select-node($doc, 1520),
delete nodes sdb:select-node($doc, 1520),
delete nodes sdb:select-node($doc, 1520),
delete nodes sdb:select-node($doc, 1565),
delete nodes sdb:select-node($doc, 1565),
delete nodes sdb:select-node($doc, 1565),
delete nodes sdb:select-node($doc, 1565),
delete nodes sdb:select-node($doc, 1610),
delete nodes sdb:select-node($doc, 1610),
delete nodes sdb:select-node($doc, 1610),
delete nodes sdb:select-node($doc, 1610),
delete nodes sdb:select-node($doc, 1655),
delete nodes sdb:select-node($doc, 1655),
delete nodes sdb:select-node($doc, 1655),
delete nodes sdb:select-node($doc, 1655),
rename node sdb:select-node($doc, 1700) as ,
delete nodes sdb:select-node($doc, 1700),
delete nodes sdb:select-node($doc, 1700),
delete nodes sdb:select-node($doc, 1700),
delete nodes sdb:select-node($doc, 1700),
delete nodes sdb:select-node($doc, 1700),
delete nodes sdb:select-node($doc, 1700),
insert nodes 11151213 before sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
insert nodes 14202326 before sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
insert nodes 14212325 before sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
insert nodes 142224 before sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
rename node sdb:select-node($doc, 1707) as ,
insert node attribute right { 0.7 } into sdb:select-node($doc,1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1707),
delete nodes sdb:select-node($doc, 1713),
delete nodes sdb:select-node($doc, 1713)
)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.