Continue the Development of SQL in fJySwan Blake Kobelan, Brittany Blassingill, Andrew Spence.

Slides:



Advertisements
Similar presentations
MSc IT UFCE8K-15-M Data Management Prakash Chatterjee Room 2Q18
Advertisements

C O N T E X T - F R E E LANGUAGES ( use a grammar to describe a language) 1.
1 Creating and Tweaking Data HRP223 – 2010 October 24, 2011 Copyright © Leland Stanford Junior University. All rights reserved. Warning: This.
16/11/2015 9:05 AM6/11/2015 9:05 AM6/11/2015 9:05 AMFunctions Functions A function consists of: Name Name Arguments (also called parameters) Arguments.
Using Relational Databases and SQL Steven Emory Department of Computer Science California State University, Los Angeles Lecture 2: Single-Table Selections.
Introduction to Structured Query Language (SQL)
IFS Intro. to Data Management Chapter 6 Filtering your data.
Dr. Philip Cannata 1 fJyswan. Dr. Philip Cannata 2 10 Java (Object Oriented) ASP RDF (Horn Clause Deduction, Semantic Web) Relation Jython in Java This.
Dani Vainstein1 VBScript Session 9. Dani Vainstein2 What we learn last session? VBScript coding conventions. Code convention usage for constants, variables,
CC0002NI – Computer Programming Computer Programming Er. Saroj Sharan Regmi Week 7.
Introduction As we have already seen, exponential equations are equations that have the variable in the exponent. Some exponential equations are complex.
Chapter 3 Single-Table Queries
AL-MAAREFA COLLEGE FOR SCIENCE AND TECHNOLOGY INFO 232: DATABASE SYSTEMS CHAPTER 7 INTRODUCTION TO STRUCTURED QUERY LANGUAGE (SQL) Instructor Ms. Arwa.
Complex objects How might you design a class called NestedRects of graphical objects that look like this? Requirements for the constructor: –Like many.
 Continue queries ◦ You completed two tutorials with step-by-step instructions for creating queries in MS Access. ◦ Now must apply knowledge and skills.
LDAP Integration into ReL Clay Smalley Paulo Alcantara.
Chapter 10 Selected Single-Row Functions Oracle 10g: SQL.
Lecture 7 Integrity & Veracity UFCE8K-15-M: Data Management.
ASP.NET Programming with C# and SQL Server First Edition Chapter 3 Using Functions, Methods, and Control Structures.
Arden Objects Proposal Arden SIG Meeting Jan. 14, 2003 San Antonio, Texas Presented by Roger Corman.
1 Definition of a subquery Nested subqueries Correlated subqueries The ISNULL function Derived tables The EXISTS operator Mixing data types: CAST & CONVERT.
7 1 Chapter 7 Introduction to Structured Query Language (SQL) Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel.
1 Chapter 4 – Breaking It Up: Functions spring into PHP 5 by Steven Holzner Slides were developed by Jack Davis College of Information Science and Technology.
1 Lab 2 and Merging Data (with SQL) HRP223 – 2009 October 19, 2009 Copyright © Leland Stanford Junior University. All rights reserved. Warning:
Oracle 11g: SQL Chapter 10 Selected Single-Row Functions.
CS146 References: ORACLE 9i PROGRAMMING A Primer Rajshekhar Sunderraman
6 1 Lecture 8: Introduction to Structured Query Language (SQL) J. S. Chou, P.E., Ph.D.
Relational Databases.  In week 1 we looked at the concept of a key, the primary key is a column/attribute that uniquely identifies the rest of the data.
8 1 Chapter 8 Advanced SQL Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel.
CSCI 3327 Visual Basic Chapter 13: Databases and LINQ UTPA – Fall 2011.
Database Systems Design, Implementation, and Management Coronel | Morris 11e ©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or.
Lab_03: Basic SQL.
IFS Intro to Data Management Chapter 5 Getting More Than Simple Columns.
Chapter 12 Subqueries and Merge Statements
A SParqly Jython++ A SParqly Jython++ an ASP/SPARQL enhanced Jython Cliff Cheng Carlos Urrutia Francisco Garcia.
A Guide to SQL, Eighth Edition Chapter Six Updating Data.
# 1# 1 QueriesQueries How do we ask questions of the data? What is SELECT? What is FROM? What is WHERE? What is a calculated field? Spring 2010 CS105.
Simple Queries DBS301 – Week 1. Objectives Basic SELECT statement Computed columns Aliases Concatenation operator Use of DISTINCT to eliminate duplicates.
Writing Basic SQL SELECT Statements Lecture
MySQL Tutorial. Databases A database is a container that groups together a series of tables within a single structure Each database can contain 1 or more.
Operator precedence parser Lecturer: Noor Dhia
ReL Components CodeCompiler.java Python.g AST Visitor Interpreter
More SQL: Complex Queries, Triggers, Views, and Schema Modification
Using Subqueries to Solve Queries
Chapter 12 Subqueries and MERGE Oracle 10g: SQL
Chapter 10 Selected Single-Row Functions Oracle 10g: SQL
Parsing Bottom Up CMPS 450 J. Moloney CMPS 450.
Cameron Blashka| Informer Implementation Specialist
Object Oriented Programming
Scope, Objects, Strings, Numbers
Chapter 4: Making Decisions.
Riding the Wave of Innovation
Using Subqueries to Solve Queries
Oracle Analytic Views Enhance BI Applications and Simplify Development
ISC440: Web Programming 2 Server-side Scripting PHP 3
CS 3304 Comparative Languages
CMPE 152: Compiler Design September 13 Class Meeting
Group Project Justin Hust Ethan Petuchowski Simon Doty
Coding Concepts (Basics)
SQL DATA CONSTRAINTS.
Using Subqueries to Solve Queries
Writing Basic SQL SELECT Statements
Lab 2 and Merging Data (with SQL)
Lab 2 HRP223 – 2010 October 18, 2010 Copyright © Leland Stanford Junior University. All rights reserved. Warning: This presentation is protected.
Contents Preface I Introduction Lesson Objectives I-2
PHP and MySQL.
High-Level Programming Language
IPC144 Introduction to Programming Using C Week 4 – Lesson 2
Chapter 3: Selection Structures: Making Decisions
Presentation transcript:

Continue the Development of SQL in fJySwan Blake Kobelan, Brittany Blassingill, Andrew Spence

What we added Basic functionality: –Doubles –Dates –Longs –Strings Expressions: –Addition –Multiplication –< –> –!=

What we added ORDER Bys JOIN OR AND ? - SUBSELECT

What we initially did Instead of implementing these changes in PyTuple.java, we created a visitor class that used JSQLParser and it’s own internal grammar to recognize filters, tables, columns, etc.

What we initially did We also made some minor changes in Python.g:

‘’SELECT * FROM Persons WHERE FirstName=‘Tove’ OR FirstName=‘Ola’’’ The JSQL Parser has a ‘temp’ global variable that is changed based on its internal grammar. The parser will automatically determine (via its accept method) which part of the SQL statement is what and passes it into the appropriate visit method. The temp variable is then changed. In this case, it will first get the table name: temp = Persons Will call this

‘’SELECT * FROM Persons WHERE FirstName=‘Tove’ OR FirstName=‘Ola’’’ It will then check for a WHERE clause and goes through a series of visits: getWhere() visit(OrExpression) getLeftExpression() getRightExpression() visit(EqualsTo) getLeftExpression() getRightExpression() getLeftExpression() getRightExpression() visit(column) visit(String) visit(column) visit(String) temp = FirstName temp = ‘Tove’ temp = FirstName temp = ‘Ola’

‘’SELECT * FROM Persons WHERE FirstName=‘Tove’ OR FirstName=‘Ola’’’ getWhere() visit(OrExpression) getLeftExpression() getRightExpression() visit(EqualsTo) getLeftExpression() getRightExpression() getLeftExpression() getRightExpression() visit(column) visit(String) visit(column) visit(String) temp = FirstName temp = ‘Tove’ temp = FirstName temp = ‘Ola’

‘’SELECT * FROM Persons WHERE FirstName=‘Tove’ OR FirstName=‘Ola’’’ getWhere() visit(OrExpression) getLeftExpression() getRightExpression() visit(EqualsTo) getLeftExpression() getRightExpression() getLeftExpression() getRightExpression() visit(column) visit(String) visit(column) visit(String) temp = FirstName temp = ‘Tove’ temp = FirstName temp = ‘Ola’

‘’SELECT * FROM Persons WHERE FirstName=‘Tove’ OR FirstName=‘Ola’’’ getWhere() visit(OrExpression) getLeftExpression() getRightExpression() visit(EqualsTo) getLeftExpression() getRightExpression() getLeftExpression() getRightExpression() visit(column) visit(String) visit(column) visit(String) temp = FirstName temp = ‘Tove’ temp = FirstName temp = ‘Ola’

‘’SELECT * FROM Persons WHERE FirstName=‘Tove’ OR FirstName=‘Ola’’’ getWhere() visit(OrExpression) getLeftExpression() getRightExpression() visit(EqualsTo) getLeftExpression() getRightExpression() getLeftExpression() getRightExpression() visit(column) visit(String) visit(column) visit(String) temp = FirstName temp = ‘Tove’ temp = FirstName temp = ‘Ola’

‘’SELECT * FROM Persons WHERE FirstName=‘Tove’ OR FirstName=‘Ola’’’ getWhere() visit(OrExpression) getLeftExpression() getRightExpression() visit(EqualsTo) getLeftExpression() getRightExpression() getLeftExpression() getRightExpression() visit(column) visit(String) visit(column) visit(String) temp = FirstName temp = ‘Tove’ temp = FirstName temp = ‘Ola’

‘’SELECT * FROM Persons WHERE FirstName=‘Tove’ OR FirstName=‘Ola’’’ getWhere() visit(OrExpression) getLeftExpression() getRightExpression() visit(EqualsTo) getLeftExpression() getRightExpression() getLeftExpression() getRightExpression() visit(column) visit(String) visit(column) visit(String) temp = FirstName temp = ‘Tove’ temp = FirstName temp = ‘Ola’

‘’SELECT * FROM Persons WHERE FirstName=‘Tove’ OR FirstName=‘Ola’’’ getWhere() visit(OrExpression) getLeftExpression() getRightExpression() visit(EqualsTo) getLeftExpression() getRightExpression() getLeftExpression() getRightExpression() visit(column) visit(String) visit(column) visit(String) temp = FirstName temp = ‘Tove’ temp = FirstName temp = ‘Ola’

‘’SELECT * FROM Persons WHERE FirstName=‘Tove’ OR FirstName=‘Ola’’’ getWhere() visit(OrExpression) getLeftExpression() getRightExpression() visit(EqualsTo) getLeftExpression() getRightExpression() getLeftExpression() getRightExpression() visit(column) visit(String) visit(column) visit(String) temp = FirstName temp = ‘Tove’ temp = FirstName temp = ‘Ola’

‘’SELECT * FROM Persons WHERE FirstName=‘Tove’ OR FirstName=‘Ola’’’ getWhere() visit(OrExpression) getLeftExpression() getRightExpression() visit(EqualsTo) getLeftExpression() getRightExpression() getLeftExpression() getRightExpression() visit(column) visit(String) visit(column) visit(String) temp = FirstName temp = ‘Tove’ temp = FirstName temp = ‘Ola’

‘’SELECT * FROM Persons WHERE FirstName=‘Tove’ OR FirstName=‘Ola’’’ getWhere() visit(OrExpression) getLeftExpression() getRightExpression() visit(EqualsTo) getLeftExpression() getRightExpression() getLeftExpression() getRightExpression() visit(column) visit(String) visit(column) visit(String) temp = FirstName temp = ‘Tove’ temp = FirstName temp = ‘Ola’ Will do the same thing for the right hand side

‘’SELECT * FROM Persons WHERE FirstName=‘Tove’ OR FirstName=‘Ola’’’ wasEquals is eventually set to false since there were no matches and the OR clauses are interpreted as filters: Finally, the columns are added:

Final test output before RDF conversion: ‘’SELECT * FROM Persons WHERE FirstName=‘Tove’ OR FirstName=‘Ola’’’

Conversion to RDF Our conversion takes place inside our SQLVisitor class. As a small example: SELECT * FROM NEWTEST1 –Based on what is seen, a string gets consistently built until it’s in the correct RDF format:

SELECT * FROM NEWTEST1

–SELECT sub, pred, obj from table( SEM_MATCH(SELECT ?sub ?pred ?obj WHERE (?sub ?pred ?obj. )’. SEM_Models(‘NEWTEST1_CS345_RICK), null, SEM_ALIASES(SEM_ALIAS(‘tbl’, ‘ null))

Implementation in PyTuple.java –Since we used a visitor class, implementation was pretty simple: –We just made a visitor object and passed in the sql statement,

Concepts Covered