Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
Is there any site available online for verifying the syntax which conforms to multiple databases?
For example: If I have a SQL statement with a 'usage' keyword, then the site should throw me an error saying that 'usage' keyword is reserved in MYSQL?
You could try a formatter like this
They will always be limited because they don't (and can't) know what user defined functions you may have defined in your database (or which built-in functions you have or don't have access to).
You could also look at ANTLR (but that would be an offline solution)
Have you tried http://www.dpriver.com/pp/sqlformat.htm?
I haven't ever seen such a thing, but there is this dev tool that includes a syntax checker for oracle, mysql, db2, and sql server... http://www.sqlparser.com/index.php
However this seems to be just the library. You'd need to build an app to leverage the parser to do what you want. And the Enterprise edition that includes all of the databases would cost you $450... ouch!
EDIT:
And, after saying that - it looks like someone might already have done what you want using that library: http://www.wangz.net/cgi-bin/pp/gsqlparser/sqlpp/sqlformat.tpl
The online tool doesn't automatically check against each DB though, you need to run each manually. Nor can I say how good it is at checking the syntax. That you'd need to investigate yourself.
Only know about this. Not sure how well does it against MySQL http://developer.mimer.se/validator/
I don't know of any such, and my experience is that it doesn't currently exist. Most are side by side comparisons of two databases. That information requires experts in all the databases encountered, which isn't common. Versions depend too, to know what is supported.
ANSI functions are making strides to ensure syntax is supported across databases, but it's dependent on vendors implementing the spec. And to date, they aren't implementing the entire ANSI spec at a time.
But you can crowd source on sites like this one by asking specific questions and including the databases involved and the versions used.
I am willing to bet some of my reputation that there is no such thing.
Partially because if you are worried about cross-platform SQL compatibility, your best bet in turn is to abstract your database code with some API or ORM tool that handles these things for you, and is well supported, so will deal with newer database versions as they come out.
Exact kind of API available to you will be dependent on your programming language/platform. For example, PHP has Pear:DB and others, I personally have found quite nice Python's ORM features implemented in Django framework. I presume there should be some of these things available on other platforms as well.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
I have tried using ProR to create an ReqIF document. It is cumbersome and contains a lot of bugs, since it is in its alpha state now. Another constraint that I have right now is that I cannot use proprietary software like IBM Rational DOORS. Are there any other such tools to generate ReqIF documents? Are there any alternatives to ProR?
I am the project lead on the Eclipse ProR project, and I am sorry to hear that ProR is not yet up to it for your needs.
As far as I know, there is not even commercial support for ReqIF available (please correct me if I am wrong). DOORS currently only supports RIF 1.2. Also, please keep in mind that ReqIF 1.0.1 only got released in April 2011 - that's not even a year. It takes time to write software. :-)
A possible alternative for you may be to use a RIF tool and to write yourself an XSLT script to transform RIF into ReqIF.
Another alternative is to work with RIF 1.1 or RIF 1.2 for the time being. There are many commercial tools supporting that standard, although I am not aware of a single one that is free.
The third (and to me preferred) option would be if you could give ProR another chance, and help to improve it. Specifically, if you could give us clear, reproducible bug reports, that would be fabulous. Also, it would be incredible useful if we knew how you plan on using ProR (what are your use cases?). We are actively working on ProR right now, and respond fairly quickly.
Here is the link to file a ProR Bug in Bugzilla
The best place to discuss usage and use cases is the RMF Forum
And last, for reference, the ProR project web page
Shriram,
RIF 1.2 files generated in DOORS 9.x do not conform to the schema - that's at least what we have experienced at a customer site.
If you want to transform RIF 1.1a, 1.2 or XLS to ReqIF (and vice-versa), you might want to try http://www.pyrrho.com/en/ReqIF/ReqIF-Intro.htm. They run an online conversion service, which is currently free - I do not know what the future plans are.
I have heard from a colleague that the User Interface of Pyrrho is not quite intuitive, but I have tried it and it works. The XLS to RIF/ReqIF transformation is still limited, as all datatypes are interpreted as strings, so far. It is generated from the models, so it should be complete, otherwise.
Our tool, the ReqIF Server (http://www.reqif.de), is free for university projects, but not complete enough to create a reqif file from scratch. You can edit existing ones, though. Or convert RIF 1.1a to 1.2 and vice versa.
Best regards, Oskar
I am project member of the ERA ReqIF editor.
We have implemented an EMF/Ecore representation of a subset of the ReqIF model.
Still, we store files primarily in EMF XML format.
Our little converter to ReqIF XML format is yet a prototype and very alpha (because we focus on our user-configurable GUI...).
In conclusion, ERA will not help you, yet. But I just wanted to let you know.
Probably you are interested in tracking our project in the future.
(We are a small private team and it will take us some time.)
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I had recently stabilised developments of a major open source library written in Java. I have then published an article on the server side, which has brought me a lot of positive (but also critic, constructive) feedback. And a first contributor, which is great!
See the article here: http://www.theserverside.com/discussions/thread.tss?thread_id=61162
And the library: http://jooq.sourceforge.net
So with all of that good feedback, I have a great feeling about my project, in a way that I am creating something useful and original. Some key ideas behind my project, and why I think it is original:
It's an or-mapper. OK, now that really isn't original... ;-)
It has code generation in it. OK, still not original. But that's always nice.
It allows for creating type-safe queries in Java using its own domain specific language. That's better. No string concatenation. JPA has only just recently copied criteria queries from Hibernate.
It allows for doing so with all SQL features, including complex joins, nested selects, unions, aliasing, etc. Now that seems original to me. OR-mappers tend to try to ignore the relational data model behind RDBMS.
It supports all kinds of native non-standard functionality like UDTs, stored procedures, native functions, etc. I don't know any or-mapper that does that.
I think that these key ideas are useful for a very specific type of developer. That specific developer
interfaces Java with huge legacy databases.
knows SQL well and wants to use it extensively.
doesn't want to learn any new language (HQL, JPQL, etc)
doesn't want to spend one minute fine-tuning some sophisticated XML-configuration.
wants little abstraction over SQL, because his software is tightly coupled with his database. Something that I think the guys at Hibernate or JPA seem to have ignored.
EDIT: needs a strong but light-weight library for database access. For instance when they develop for mobile devices (see comment by SRM).
Now is the beginning of the hard work. How to get attention? How can I attain a bigger crowd? How can my project become relevant? How to reach to that "specific type of developer"?
I would say set up a professional looking site (one that doesn't look like it was designed by a 15 year old script kiddie). Make sure you have ample documentation with plenty of help and/or tutorials for using your library. Example applications are also good to see a real world usage of the library.
Once you have that setup I would do some typical SEO to drive traffic to your site. This includes blog articles, links back to your page and or articles, and possibly buying some Addwords from google.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
Why are there so many Database management systems? I am not an DB expert and I've never thought about using another Database other than mySQL.
Programming languages offer different paradigms, so it makes sense to choose a specific language for your purpose.
Question
What are the factors in choosing a specific Database management system ?
Different Strokes for Different Folks:
The .NET people like the homogeneous stack that Microsoft SQL Server provides.
Oracle is the 'Please use in Enterprise Applications only' DBMS.
MySQL and PostgreSQL are used by the Open-Source crowd.
SQLite is great for an embedded DBMS.
Microsoft Access is great for a One-Person Microsoft Office Integrated Database (or, for people that don't know any better)
I know next to nothing about non-relational DBMSs: NoSQL, MongoDB, db4o, CouchDB, BigTable. I'd recommend a different question to address those, since their aims are different than traditional RDBMSs.
DBMS are around for many many years and very important for the IT infrastructure in the past, nowerdays and for the future. So a lot of people tried to get into the business. There are a lot of office suites, internt browsers, etc, etc.
What are factors to choose a specific DB management system ?
Licensing
Platform
Performance
Supported programming language
etc, etc
If the paradigms are the same, it's also a market sharing issue.. (Has it been skipped?!?) Otherwise, Peter's answer is considerable.
There's a noticable absence of e.g. column-oriented (LucidDB), platform independent (derby), in-memory (hsqldb, although derby fits here as well) and probably other databases, as classified by their key properties.
"This answer doesn't really answer 'why', it just answers 'who'."
True, but I guess the answer to 'why' might be that there have been so many 'who' 's who all thought they could do it "better than the others".
With "better" having the significance of a fill-in-the-gaps that the particular 'who' chose to pick on :
nearly watertight guarantee of read success through MVCC locking, as opposed to more traditional two-phase locking.
no fee, as opposed to million-dollar fees
easy interfacing with language XYZ, which the others don't have
...
My personal pet issue is support for CREATE ASSERTION. It's been in the SQL standard since 1992, and none of the big elephants know how to support it. I do.
For the most part, if you are writing for the RDBMS/SQLish market, the number one question you should probably ask is, "What do I already know about? What does my staff know about?" If you have an answer for that, then you should probably pick that SQL engine first. My inner database geek cringes at this answer, but the truth is that unless your developers are among the tiny fraction that really get relational databases anyway, you're going to use the same deep ruts of standard database mistakes as everyone else, and the main question is going to be whether you can get your system to go fast enough.
This is probably true if you've swallowed a pitcher of the NoSQL beverage of choice as well, since there too you have to pick the thing you understand.
If you are already in a position to understand all these differences, however, then you will understand that the answer is "it depends". The usual four dimensions come down to these: execution speed for a given workload profile (this is a matter of whether the database is excellent at the particular kind of problem: some are faster for lookup, for instance, where others are better under high concurrency writing); SQL conformance in the target areas (e.g. Oracle has funny -- i.e. wrong -- NULL handling, MySQL is all over the map, Postgres wraps unquoted identifiers to lower case); money cost both immediately and over the long haul (include hardware requirements, costs of hiring people, licenses); and maybe features you want (if you want Oracle's RAC, you have to buy Oracle).
Database systems offer different paradigms too. For instance, MySQL or MSSQL are relational, while db4o is object-oriented, and MongoDB is document-oriented.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
does anyone know about a open source expert system? actually, I'm rather interested in calling its inferential engine from C#.
Both CLIPS and JESS are already mentioned in other answers, so I will supply this link to CLIPS versus JESS:
http://www.comp.lancs.ac.uk/~kristof/research/notes/clipsvsjess/
It was written June 4, 1999, and at that time the advantage was clearly with CLIPS.
If you don't want to read it all, here are the conclusions:
Chapter 3 The conclusions
Both CLIPS and JESS are products with a large support on the internet,
but CLIPS seems to have a broader audience, probably because it exists
longer. This difference in age results in the CLIPS package being more
stable and complete, while JESS users will still experience some minor
bugs. JESS is constantly updated and the author, Ernest Friedman-Hill,
has been very responsive to user/developer feedback and regularly puts
out new releases and bug fixes.
Nowadays, the choice between JESS and CLIPS depends on the
application. If it is web-based or should reside in applet-form, the
choice of JESS is a very logical one (which is even supported by the
authors of CLIPS). For the more classic applications, CLIPS will
probably be chosen because of its reputation of being more stable and
having more support.
The future of JESS depends highly on the evolution of the web, the
Java programming language and its own future stability. These three
conditions make that there is a great possibility that JESS will
become more popular and more frequently used. Especially the
object-oriented possibilities and the easy integration into Java code
makes JESS’ future very promising.
CLIPS, on the other hand, is more likely to implement the new and
sophisticated features first as they come out, since it still has the
advantage in time. CLIPS has also various extensions and variants(like
FuzzyCLIPS, AGENT CLIPS, DYNACLIPS, KnowExec, CAPE, PerlCLIPS, wxCLIPS
and EHSIS to name a few) that give it an advantage with respect to
support of methods like fuzzy logic and agents.
The multifunctional developing environment of CLIPS for operating
systems that support windows is also an advantage, while JESS has just
one window with two buttons (‘clear window’ and ‘quit’), without a
menu. Figures 1 and 2 depict both environments.
To summarize, CLIPS is still more complete and stable than JESS, but
this might change in the future, since the JESS package is being
improved constantly. Besides that, JESS has also the property of using
Java, which in the long run might prove to be a big advantage over
CLIPS.
These links may also be of interest:
http://en.wikipedia.org/wiki/CLIPS
Commercial & Freeware Expert System Shells
http://www.kbsc.com/rulebase.html
Are there open source expert systems with reasoning capabilities?
I went through the same process, about a year ago, trying to find a good .Net system for this. I recall finding a few decent engines, but they were all too general, and required too many assumptions.
In the end I found that writing my own system was pretty easy to do, and it did exactly what I wanted it to, without any extra bull to make it work with some abstract generalized engine.
It might help to know what your intended use is.
Take a look at CLIPS -- it is coded in C.
There's more info on CLIPS at Wikipedia.
If you'd consider a rule-processing engine, JBoss Rules (also known as Drools) is the best that I know of. Open Source and free. It's written in Java, but designed for integration. You can incorporate objects in the rules and rule-base applications in your components. You can even build or modify rule-bases on the fly.
AI::ExpertSystem::Advanced or AI::ExpertSystem::Simple is a Perl solution.
You can try JESS, but it is Java-based. Amzilogic also provide a good platform.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
What are some of the best or most popular rule engines? I haven't settled on a programming language, so tell me the rule engine and what programming languages it supports.
I am one of the authors of Drools, I will avoid pimping my wares.
But some other options are Jess (not open source) but uses the clips syntax (which we also support a subset of) - which is kinda a lisp dialect.
It really depends what you want it for, Haley have strong Natural language tech (and they recently aquired RuleBurst - who has also interesting natural language tech which could deal with word documents with embedded rules - eg legal documentation). RuleBurst was able to target .Net runtimes as well (there is a Drools.net "port" available as well - I haven't seen what it has been up to lately, alas, not enough time). Ok I will put my pimp bling away now... sorry about that.
This is a great article by Martin Fowler, which is a discussion about when rules engines can be useful. You may find it helpful.
http://martinfowler.com/bliki/RulesEngine.html
Depending on what your requirements are, Windows Workflow Foundation (.NET 3.5) might be worth having a look at.
The .NET rule engine InRule supports WF and BizTalk; I've not tried it though so don't know if it's any good.
I have a bit of experience with both Haley Expert Rules and Haley Office Rules. Both nice systems, but I'd need to know a bit more abut what you want to use them for to answer definitively (See http://www.haley.com)
They both support C# and Java (and I think also a web service api).
The difference between the two is mostly around how much natural language modelling you want to get into. Office rules lets business users write rules in an Office document, and is mostly focused around legislative requirements modelling. Expert rules can be a bit more flexible in definition how it handles natural language, but requires more work defining language structures up front.
Hope some of that helps.
We've used both http://jatha.sourceforge.net and http://www.jboss.com/products/rules. They're both pretty good, but for the most part, JBoss rules seems to me to be overkill for a lot of what people do. They're both Java based.
It's worth remembering Greenspun's Tenth Rule of Programming and skip ahead to importing it :)
I've checked out JBoss Rules aka Drools and it looks pretty good. I'd love to hear from people using it in production, because I'm probably gonna need a rule engine in my current project as well.
Inrule see website is very good!
it is a .NET based rule engine with a solid SDK and a nice UI for non technical users.
Worked great for me in past - pretty much cut my development cost in half.
For very well understood, procedural rules (like eligibility rules, insurance rules, audit rules, etc.) then simple decision tables with a Domain Specific Language can give you the performance and simplicity without the overhead of RETE based engines.
A Java open sourced rules engine of this sort can be found at DTRules
I found another rule engine that supports different kinds of rules; Procedural, Inference (RETE) and FlowRule. This is quite flexible and extensible rule engine (also event driven). They had express version as free edition while ago.
Take a look at http://www.flexrule.com
WF is available already in .net 3.0. It is a bit buggy though on the Designer-side in Visual Studio and can get quite messy. I use it on Sharepoint (where WF is pretty much your only option anyway) and overall I am quite satisfied with it, even though the learning curve is rather steep.
Foundations of WF is a good book to start with it, as they implement a complete solution from beginning to the end and explain the concepts behind it.