KR100930108B1 - XQuery 질의를 위한 스키마 기반 정적 검사 시스템및 방법 - Google Patents

XQuery 질의를 위한 스키마 기반 정적 검사 시스템및 방법 Download PDF

Info

Publication number
KR100930108B1
KR100930108B1 KR1020070123248A KR20070123248A KR100930108B1 KR 100930108 B1 KR100930108 B1 KR 100930108B1 KR 1020070123248 A KR1020070123248 A KR 1020070123248A KR 20070123248 A KR20070123248 A KR 20070123248A KR 100930108 B1 KR100930108 B1 KR 100930108B1
Authority
KR
South Korea
Prior art keywords
schema
xquery
query
item
verification
Prior art date
Application number
KR1020070123248A
Other languages
English (en)
Other versions
KR20080052399A (ko
Inventor
이경하
박재홍
이미영
김명준
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Publication of KR20080052399A publication Critical patent/KR20080052399A/ko
Application granted granted Critical
Publication of KR100930108B1 publication Critical patent/KR100930108B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/253Grammatical analysis; Style critique
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • G06F16/835Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/189Automatic justification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 XQuery 질의를 위한 스키마 기반 정적 검사 시스템 및 방법에 관한 것으로서, XQuery 질의를 입력으로 하여, 질의의 문법적인 오류를 분석하고, 오류가 없는 경우에 XQuery 파스 트리를 출력하는 XQuery 파서와, XML 스키마 정의들을 입력으로 하여, 문법적인 검사를 수행하고, 오류가 없는 스키마 정의에 대하여 접근 가능한 스키마 그래프를 출력하는 XML 스키마 파서와, XQuery 파서로부터 입력받은 XQuery 파스 트리에 대한 정적 검사를 수행하며, 정적 검사 수행에 있어서 XML 스키마 파서로부터 입력받은 스키마 그래프를 이용하는 스키마 기반 질의 정적 검사 엔진을 구성하여 XQuery 질의 처리 시에 질의의 실제 수행 이전에 입력받은 질의가 유효한지를 신속하게 판별할 수 있다.
XQuery 질의, 스키마 정의, 스키마 그래프, 정적 검사

Description

XQuery 질의를 위한 스키마 기반 정적 검사 시스템 및 방법{SYSTEM AND METHOD OF SCHEMA-BASED STATIC ANALYSIS FOR XQUERY EVALUATION}
본 발명은 XQuery 질의를 처리하는 시스템 및 방법에 관한 것으로, 더욱 상세하게는 XML 문서를 위한 질의 언어인 XQuery에 대한 정적 검사 방법 및 이러한 방법이 구현되는 XQuery에 대한 정적 검사 시스템을 제공한다.
본 발명은 정보통신부 및 정보통신연구진흥원의 IT신성장동력핵심기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2005-S-405-02, 과제명: 차세대 인터넷 서버 기술 개발].
XQuery는, XML 문서에 대한 질의 언어를 의미하고, XQuery의 실행을 위해서는 XML 문서에 대한 검사가 요구된다. 예를 들어, 이러한 검사에는, XQuery 질의가 정해진 문법(grammar)대로 작성되었는지에 대한 검사, 실제 질의 수행 이전의 컴파일 타임에 질의의 문법적 오류 외의 의미적 오류를 검사하는 정적 검사 및 질의 수행 시간 동안의 동적 검사가 존재한다.
상기 정적 검사에서는, XQuery 파서를 통해 문법적으로 옳다고 판정된 XQuery 질의에 대하여, 문법만으로는 판별하기 어려운 여러 의미적인 오류 가능성 에 대한 검사를 수행한다. 이러한 의미적인 오류의 검사는, 1)지정된 항목의 타입이 질의의 다른 항목과 같이 사용되는 데 있어 오류를 발생시키지 않는지를 검사하는 타입 검사, 2)질의에 이용된 경로 표현식이 실제 유효한 노드를 지칭하고 있는지를 판별하는 구조 검사, 3)질의에 사용된 여러 변수들이 제대로 선언되고 참조 되고 있는지를 검사하는 변수 검사, 4)질의에 사용된 여러 연산자와 함수들이 적절히 사용되었는지를 검사하는 연산자/함수 검사 등으로 구성된다.
즉, 이러한 XQuery 질의에 대한 정적 검사를 수행하는 데 있어, XML 문서 자체는, 타입 및 구조 정의에 대한 정보를 가지고 있지 않기 때문에, 문서에 대한 타입 정보와 구조 정의를 포함하는 스키마 정의를 참조하여 질의 실행에 필요한 타입 정보를 주해하고, 이를 기반으로 검사를 수행해야 한다.
그러나, 종래의 연구들은 이러한 정적 검사에 대한 완전한 해결책을 제시하고 있지 않다. 예를 들어, 상기 종래의 연구들은, XML 문서의 XML 스키마에 대한 유효성 검증만을 대상으로 하고 있거나, XQuery 질의가 처리하는 XML 문서에 대한 유효성 검증만을 대상으로 하고 있다.
또한, 종래의 기술에 의하면, 스키마 정의에 대한 참조를 기존의 스키마 파서가 생성하는 스키마 그래프를 대상으로 함에 따라 스키마 정의의 빈번한 접근에 있어 효율이 떨어지는 문제점이 있다. 또는, 스키마 정의의 빈번한 접근에 있어 효율성을 재고하기 위하여 스키마 그래프를 이용하지 않는 경우에는, XML 문서에 대한 유효성 검증만을 대상으로 하기 때문에 XQuery 질의의 정적 검사를 지원하지 못한다.
따라서, 본 발명은 상기한 종래 기술의 문제점을 해결하기 위해 이루어진 것으로서, 본 발명의 목적은 XQuery 질의 처리 시에 질의의 실제 수행 이전에 입력받은 질의가 유효한지를 신속하게 판별하는 XQuery 질의를 위한 스키마 기반 정적 검사 시스템 및 방법을 제공하는데 있다.
한편, 본 발명의 다른 목적은 XQuery의 질의 처리에 있어 XML 스키마 정의의 참조가 필요할 때에 신속하게 스키마 정의의 구성 요소에 접근할 수 있는 XQuery 질의를 위한 스키마 기반 정적 검사 시스템 및 방법을 제공하는데 있다.
상기와 같은 목적을 달성하기 위한 본 발명의 XQuery 질의를 위한 스키마 기반 정적 검사 시스템은, XQuery 질의를 입력으로 하여, 질의의 문법적인 오류를 분석하고, 오류가 없는 경우에 XQuery 파스 트리를 출력하는 XQuery 파서; XML 스키마 정의들을 입력으로 하여, 문법적인 검사를 수행하고, 오류가 없는 스키마 정의에 대하여 접근 가능한 스키마 그래프를 출력하는 XML 스키마 파서; 및 상기 XQuery 파서로부터 입력받은 XQuery 파스 트리에 대한 정적 검사를 수행하며, 상기 정적 검사 수행에 있어서 상기 XML 스키마 파서로부터 입력받은 스키마 그래프를 이용하는 스키마 기반 질의 정적 검사 엔진을 포함하여 이루어진 것을 특징으로 한다.
한편, 본 발명의 XQuery 질의를 위한 스키마 기반 정적 검사 방법은, XQuery 파스 트리를 입력받아, 각 XQuery 파스 트리 내의 노드들을 순회하면서 검증 항목을 추출하는 단계; 상기 추출된 검증 항목에 대한 스키마 참조가 필요한 경우에, 참조 스키마가 메모리에 적재되어 있는지를 판단하는 단계; 상기 판단 결과 적재되어 있지 않은 경우에, 스키마를 입력받아, 스키마 트리를 생성하면서, 스키마 인덱스와 주해 정보를 생성하는 단계; 및 상기 판단 결과 적재되어 있는 경우에, 질의 검증을 수행하는 단계를 포함하여 이루어진 것을 특징으로 한다.
상술한 바와 같이, 본 발명에 의한 XQuery 질의를 위한 스키마 기반 정적 검사 시스템 및 방법은, XML 스키마에 대하여 색인을 부여하여 이를 메모리상에 유지하면서, XML 스키마 정의의 참조를 신속하게 처리할 수 있다. 또한, 상기 XML 스키마 정의를 통하여, XQuery 질의의 정적 검사를 신속하게 수행할 수 있는 시스템, 자료 구조 및 처리 방법을 제공한다.
상술한 목적, 특징들 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 더욱 분명해 질 것이다. 이하 첨부된 도면을 참조하여 본 발명에 따른 다양한 실시예들을 상세히 설명한다. 또한, 본 발명의 요지를 흐리게 할 우려가 있다고 판단되는 공지기술에 대하여서는 그 상세한 설명을 생략하도록 한다.
도 1을 참조하여, 본 발명에 따른 XQuery 질의에 대한 정적 검사 시스템에 대하여 상세히 설명하도록 한다.
도 1에 도시된 바와 같이, 본 발명에 따른 정적 검사 시스템(100)은, XQuery 파서(104), XML 스키마 파서(110), 스키마 기반 질의 정적 검사 엔진(114)을 포함한다. 상기 XQuery 파서(104)는, XQuery 질의(102)를 입력으로 하여, 질의의 문법적인 오류를 검사하고 오류가 없는 문서에 대해 XQuery 파스 트리(106)를 출력한다. 또한, 상기 XML 스키마 파서(110)는, XML 스키마 정의들(108)을 입력으로 하여, 문법적인 검사를 수행하고 오류가 없는 스키마 정의에 대하여 접근 가능한 스키마 그래프(112)를 출력한다.
상기 스키마 기반 질의 정적 검사 엔진(114)은, XQuery 파스 트리를 입력으로 하여 정적 검사를 수행하며, 상기 정적 검사에 필요한 스키마 정의는 상기 XML 스키마 파서(110)로부터 입력받은 스키마 그래프(112)를 이용하여 수행한다. 상기 스키마 기반 질의 정적 검사 엔진(114)에 의한 질의의 정적 검사 결과는, 참 또는 거짓이며, 오류 발생 시에는 XQuery 파스 트리(106) 내의 오류 항목을 출력한다.
도 2를 참조하여, 본 발명에 따른 스키마 기반 질의 정적 검사 엔진의 세부 구조를 상세히 설명하도록 한다.
도 2에 도시된 바와 같이, 상기 스키마 기반 질의 정적 검사 엔진(200)은, XQuery 파스 트리(202)를 입력받아, 파스 트리 순회기(210)를 통해 XQuery 파스 트리(202)를 순회하면서 검사를 수행한다. 상기 XQuery 파스 트리(202) 내 임의 토큰이 검증 항목일 경우에 검증 항목 판별기(212)가 호출되고, 여기에서는 해당 검사 항목(214)의 유형에 따라 항목별 검증 모듈(222)을 호출하게 된다.
상기 항목별 검증 모듈(222)은, XQuery 질의의 정적 검사를 수행하기 위해 필요한 스키마 인덱스와 주해 정보(226)가 메모리 상에 적재되어 있는지를 검사한 다. 그리고, 상기 검사 결과 적재되어 있다고 판단되는 경우, 이를 참조하여 검증을 수행한 후 검사 결과(216)를 상기 검증 항목 판별기(212)에 전달한다. 또한, 상기 XQuery 질의 내에 참조된 함수들에 대하여, 해당 이름을 가진 함수가 지원되는지를 판별하기 위해 지원 함수 목록(224)도 같이 조사한다. 그리고, 상기 검증 항목 판별기(212)는, 상기 검사 결과(216)를 토대로 최종 검증 결과(228)를 출력한다.
한편, 상기 항목별 검증 모듈(222)은, 상기 스키마 인덱스와 주해(226)가 상기 메모리상에 적재되어 있지 않다고 판단되는 경우에는, 상기 XML 스키마 파서(110)에 스키마 그래프의 입력을 요구한다(206). XML 스키마 파서(110)로부터 스키마 그래프가 입력되면(204), 스키마 트리 생성기(218)는, 상기 입력받은 스키마 그래프를 스키마 트리로 변환하여 출력한다. 스키마 색인과 주해 생성기(220)는, 상기 스키마 트리 생성기(218)로부터 입력받은 스키마 트리를 대상으로 하여, 신속한 접근을 위한 스키마 인덱스를 생성하고, 스키마 정의 내 선언 정보를 통해 주해 정보를 같이 생성하여 메모리상에 적재한다.
도 3을 참조하여, 스키마 기반 질의 정적 검사 엔진을 구성하는 항목별 검증 모듈의 세부 모듈을 상세히 설명하도록 한다.
도 3에 도시된 바와 같이, 상기 항목별 검증 모듈(300)은, XQuery 질의 내 선언되고 참조되는 변수들에 대하여 선언과 참조가 바르게 이루어졌는지를 검사하는 변수 검증 모듈(302), XQuery 질의 내 경로 표현식과 RETURN 절에서 선언하는 엘리먼트 선언에 대한 스키마 기반 유효성 검증을 수행하는 구조 검증 모듈(304), 질의 내에 참조되는 연산자와 함수들의 유효성을 판정하는 연산자와 함수 검증 모듈(306) 및 각 항목들의 타입이 바르게 이용되는지를 판별하는 데이터 타입 검증 모듈(308)로 구성된다.
도 2를 참조하면, 각 모듈의 호출은, 파스 트리 순회기(210)가 방문하는 토큰의 유형에 따라 달리 이루어지며, 이들 모듈의 동작 시에는 메모리상에 적재된 스키마 인덱스와 주해 정보(226) 및 지원 함수 목록(224)들을 참조할 수 있다.
도 4를 참조하여, 본 발명에 따른 XML 스키마 정의를 상세히 설명하도록 한다.
본 발명에 따른 XML 스키마 정의(400)는, 하위 구성 요소로서, 추가적으로 purchaseOrders 전역 엘리먼트 선언(404) 및 purchaseOrderType 전역 타입 선언(412)을 구비한다.
이때, 상기 purchaseOrders 전역 엘리먼트 선언(404)은, xsd:schema 엘리먼트(402)의 바로 하위에 존재한다. 상기 purchaseOrders 전역 엘리먼트 선언(404)을 보면, purchaseOrders 엘리먼트는 내부에 복합 타입(complex type) 선언을 가지며, 다시 이 아래에 엘리먼트 선언을 가진다. 해당 엘리먼트는, purchaseOrder 엘리먼트 선언(408)을 참조하고 있다(406). 또한, 상기 purchaseOrder 엘리먼트 선언(408)은, 해당 엘리먼트의 타입으로 PurchaseOrderType 전역 타입 선언(412)을 참조한다(410).
상기 PurchaseOrderType 전역 타입 선언(412) 아래에는, shipTo, billTo와 같은 엘리먼트 선언들이 존재하며, 이 두 엘리먼트 선언은 USAddress(416)라는 동 일한 타입을 참조하고 있다(414). 상기 USAddress(416)에는, 여러 엘리먼트들의 선언과 함께 country 애트리뷰트 선언(418)을 포함한다.
상기 XML 스키마 정의(400)는, Items 복합 타입 선언(420)뿐만 아니라 내부에 엘리먼트 선언을 포함하지 않는 SKU 단순 타입 선언(430)도 포함한다. 상기 SKU 단순 타입 선언(430)은, 복합 타입과 달리 엘리먼트 선언뿐만 아니라 애트리뷰트 선언에서도 참조될 수 있으며(426), 또한 shipBy 애트리뷰트 선언에서와 같이 애트리뷰트 선언 내에 내재할 수 있다. 추가적으로, 상기 SKU 단순 타입 선언(430)은, 기본 데이터 타입의 확장에도 사용된다. 예를 들어, 상기 SKU 단순 타입 선언(430)은, string을 기본 데이터 타입으로 하여 [숫자 세 자리]-[알파벳 두 자리]의 문자열만이 입력 가능하도록 제한하고 있다.
이와 같이, 본 발명에 따른 XML 스키마 정의(400)에서의 타입 선언은, 엘리먼트나 애트리뷰트와 같은 노드들의 내용 형식을 지정하는데 반해, 데이터 타입 선언에서는 엘리먼트 또는 애트리뷰트가 가지는 데이터의 타입을 지정한다.
도 5를 참조하여, 도 4에 도시된 XML 스키마 정의를 이용하여 XML 스키마 파서가 생성하는 스키마 그래프의 구성 요소 및 구조를 상세히 설명하도록 한다.
도 5에 도시된 바와 같이, XML 스키마 정의(400) 자체는 스키마(502) 객체로 표현되며, 전역 엘리먼트 선언들은 스키마(502) 객체에 의해 바로 참조된다. 또한, purchaseOrders 전역 엘리먼트 선언(404)은, 엘리먼트(508) 객체로 표현되며, 여기에 복합 타입(510) 객체가 포함된 형태로 표현된다. 또한, purchaseOrder 엘리먼트 선언(512) 객체가, 참조된다.
또한, 도면에서 예시한 바와 같이, XML 스키마 정의(400) 내 각 선언들은 각기 다른 유형의 객체로 표현되며, 이들 객체 간에는 스키마 정의 상에서의 참조 관계와 선언의 상/하위 위치 관계에 따라 링크로 설정된다. 이러한 모습의 스키마 그래프는 임의 구성 요소에 접근 시간이 짧지 않으며 또한 많은 메모리 공간을 필요로 한다.
도 6을 참조하여, 본 발명에 따른 XQuery 정적 검사 시스템에서 스키마 접근을 위한 인덱스를 생성하기 위하여, 트리 형태로 가공된 도 5의 스키마 그래프에 대하여 상세히 설명한다.
스키마 트리(600)는, 도 5의 스키마 그래프를 통해, 도 2의 스키마 트리 생성기(218)에 의해 생성된다. 상기 스키마 트리(600)는, 스키마 그래프 상에 존재하는 여러 참조 관계들과 타입 선언들을 정리하여 노드 선언만을 가지고, 노드의 XML 문서상에서의 상/하위 관계만을 표시한다.
상기 스키마 트리(600)는, 루트 엘리먼트인 purchaseOrders(602)에서 이 엘리먼트의 타입 정보(510)에 대한 참조는 보이지 않고, 하위 엘리먼트로 purchaseOrder(604)만이 존재하도록 도시한다. 이때, 다른 엘리먼트나 애트리뷰트에 대해서도 동일하게 참조하는 타입 선언은 예시하지 않는다.
이러한 스키마 트리의 생성은, 스키마 인덱스의 생성 시 그래프를 순회할 때에 엘리먼트 또는 애트리뷰트 선언에서 사용되는 타입 선언에서 하위 노드에 대한 선언을 추출하고, 이를 참조하는 선언의 바로 아래에 선언된다고 가정함으로써 수행된다. 도 5로 돌아가 보면, purhcaseOrders 엘리먼트 선언(508)과 purchaseOrder 엘리먼트 선언(512) 사이에 이름이 부여되지 않은 복합 타입(510)이 존재하는 경우, purchaseOrders 엘리먼트 선언(508) 아래에 purchaseOrder 엘리먼트 선언(512)이 출현하는 것으로 가정하여 스키마 트리를 생성한다.
도 7을 참조하여, 본 발명에 따른 XQuery 정적 검사 시스템이 스키마 정의의 각 요소에 신속하게 접근하기 위해 스키마 트리에 적용하는 색인에 대하여 상세히 설명하도록 한다. 도 8을 참조하여, 본 발명에 따른 XQuery 정적 검사 시스템이 신속하게 스키마를 참조하기 위하여 이용하는 스키마 색인의 생성 방법에 대하여 상세히 설명하도록 한다. 도 7은, 도 4의 XML 스키마 정의(400)에 대한 스키마 그래프(500)에서 추출한 스키마 트리(600)에 대하여 스키마 정의의 빠른 접근을 위한 색인을 부여한 예를 도시하며, 도 8은, 도 7의 스키마 색인(700)을 부여하기 위한 처리 흐름을 도시한 흐름도이다.
도 7에 도시된 바와 같이, 스키마 트리(600) 내 각 노드들은 [인덱스 값, 영역 종료 값, 경로 요약]으로 구성되는 색인 값으로 대표된다. 각 노드에 대한 색인은 스키마 트리 내 각 노드의 방문 순서에 따라 부여되며, 노드의 방문 순서는 전위 순회(preorder) 방식이다. 즉, purchaseOrders(702), purchaseOrder (704), shipTo(706), name(708), street(710)의 순으로 방문이 이루어지며, @country(718)와 같은 동일 레벨에서의 방문 노드가 없으면 상위 노드(706)의 형제 노드인 billTo(720)를 방문하고 다시 해당 노드의 하위 노드들을 차례로 방문한다. 따라서, 트리 순회 시 마지막으로 방문하는 노드는 @orderDate(724)가 되며, 노드를 방문할 때마다, 인덱스 값은 1씩 증가한다. 또한, 경로 요약 값은 현재까지 방문한 경로의 인덱스 값들을 일렬로 붙여서 생성한다. 예를 들어, name(708)의 경로는 /purchaseOrders/purchaseOrder/shipTo/name 이므로, 경로 요약 값은, 이들에 대한 각 인덱스 값을 붙인 0123이 된다.
상기 경로 요약 값을 계산하기 위해서는, 먼저 방문한 상위 노드들을 저장하기 위한 하나의 스택(stack)이 요구된다. 또한, 영역 종료 값은 트리 순회 시점과 동일 레벨에서의 방문 노드가 없어지는 시점으로 나누어 계산된다.
처음 트리 순회 시점에 영역 종료 값은 인덱스 값과 동일한 값으로 설정된다. 동일 레벨에서 더 이상 방문할 노드가 존재하지 않는 경우, country 애트리뷰트(718)를 방문한 이후의 경우에는 스택에서 먼저 방문했던 상위 노드를 꺼내어 이 노드의 영역 종료 값을 현재 노드의 영역 종료 값으로 대체하여 기록한다. 예로 shipTo(706)의 처음 색인 값은 [2, 2, 012]이지만, 트리 순회하여 방문한 노드가 country 애트리뷰트(718)에서 다음 방문할 동일 레벨의 노드가 없게 되면, 스택에서 상위 노드인 shipTo(706)을 꺼내어 경로 요약 값을 country(718)의 경로 요약 값 8로 설정하여 최종적으로 shipTo(706) [2,8,012]를 색인 값으로 가진다.
도 8에 도시된 색인 생성 방법은, 스키마 트리를 대상으로 하는 것이 아니라, 스키마 그래프를 방문하면서 스키마 트리를 가정하는 방법으로 색인을 작성한다. 이를 위해서, 먼저, 스키마 정의 상의 전역 엘리먼트 선언들을 추출(806)한다. 이때, XML 스키마 정의는, 초기 XML 문서 구조를 정의하기 위한 DTD(Document Type Definition)와 다르게, 루트 노드를 사용자가 전역 엘리먼트 선언 중에서 임의로 지정할 수 있게 허용한다. 이 때문에, 사용자가 어떠한 전역 엘리먼트 선언을 루트 로 하는가에 따라 스키마 트리가 다르게 된다. 본 발명에서는, 각 전역 엘리먼트 선언에 대해 스키마 트리를 구성하고 이에 대한 색인을 생성한다.
스키마 인덱스의 생성과 동시에 주해할 정보들도 같이 기록한다. 노드 방문 시 처리하는 작업(812)에서 도시하는 바와 같이, 노드 방문 시 인덱스 값의 기록과 함께, 현재 레벨(level), 노드 종류(node kind), 타입 이름(type name), 기본 타입(base type)을 같이 기록한다. 여기에서, 노드 종류는, 해당 노드가 어떠한 유형인지를 정의한다.
예를 들어, 노드 종류에는, ELEMENT, DOCUMENT, ATTRIBUTE, SCHEMA, NAMESPACE, TEXT, PI, COMMENT가 존재한다. 타입 이름은, 해당 노드가 참조한 타입의 이름을 표시한다. 타입의 이름이 없을 경우에는 ANONYMOUS로 기록된다. 기본 타입은, 해당 타입의 기본 타입을 기록한다. 복합 타입 선언의 경우, 기본 타입은, 존재하지 않으며 단순히 COMPLEX라 기록하며, 단순 타입 선언의 경우도 마찬가지로 SIMPLE이라 기재한다. 타입 이름이 기본 데이터 타입인 경우에는, ATOMIC으로 기록한다. 하지만, SKU 단순 타입 선언과 같이 내장 데이터 타입 string을 기준으로 신규 타입을 정의하였을 경우, 타입 이름은 SKU, 기본 타입은 string으로 기록한다.
도 9를 참조하여, 본 발명에 따른 XQuery 정적 검사 시스템에서 스키마 색인을 위한 자료 구조에 대하여 상세히 설명하도록 한다. 도 9는, 본 발명에서 시스템이 이용하는 색인과 주해 정보를 관리하기 위한 자료 구조를 도시한다.
도 9에 도시된 바와 같이, 질의 검증 핸들러(902)는, 스키마 이름을 가지고 스키마 요약(908)을 검색하는 해쉬 테이블(904)을 포함한다. 스키마 요약(908)은, 전역 엘리먼트 이름으로 주해 테이블을 검색할 수 있는 해쉬 테이블(910)을 포함한다. 주해 테이블(914)은, 주해 테이블 항목(924)들을 포함하며, 주해 테이블 항목(924)은, 도 8의 처리 흐름에서 노드 방문(812) 시 기록하는 항목들을 기록하는데 이용된다. 주해 테이블 항목(924)은, 경로 요약 값의 기록을 위한 인덱스 값의 배열 리스트(930)를 갖는다.
이름 검색 테이블(916)과 타입 검색 테이블(922)은, 노드의 이름과 타입의 이름을 가지고 대응하는 주해 테이블 항목(924)을 주해 테이블(914)로부터 신속하게 검색하기 위한 해쉬 테이블이다.
도 10을 참조하여, 도 9의 주해 테이블을 이용하여 본 발명에 따른 스키마 기반 질의 정적 검사 엔진에서 XQuery 질의에 대한 정적 검사를 수행하는 데 있어 요구되는 자료 구조에 대하여 상세히 설명하도록 한다.
도 10에 도시된 바와 같이, XQuery 질의의 정적 검사에 필요한 자료 구조는, 주해 테이블 항목(1016)을 참조하며, 변수와 함수의 목록을 기록/검색하기 위한 함수 리스트(1018) 및 변수 리스트(1004)를 포함한다. 함수 리스트(1018)는, XQuery 질의에서 이용하는 함수들의 목록을 포함하며, 각 함수는 여러 개의 함수 형식(1024)을 가지며, 함수 형식(1024)은 다시 여러 개의 입력(1026)을 포함한다. 여기에서, 함수 형식(1024)은, 동일한 이름을 가지면서 다른 출력과 입력 인자들을 가지는 함수들의 형식을 표현하기 위한 자료 구조이다.
변수 리스트(1004)는, 변수의 이름과 유형을 항목으로 하는 해쉬 테이블 (1006)을 포함한다. 그리고, 질의의 정적 검사 시에는, 변수 리스트(1004)에 해당 변수가 존재하는지를 검사함으로써 이미 선언된 변수를 참조하고 있는지 판별한다.
순열(1010)과 순열 항목(1012), 원자 값(1014) 클래스는, XQuery 질의의 정적 검사를 위해 필요한 순열과 순열 항목의 표현을 위해 이용된다. 순열 항목(1012)은, 원자 값 또는 노드 중 하나가 되며, 순열 항목(1012)의 타입이 노드인 경우에는 주해 테이블 항목(1016)을 참조한다. 반대로 순열 항목(1012)이 원자 값일 경우에는 원자 값(1014) 클래스를 참조한다. 순열(1010)은, 순열 항목(1012) 클래스들의 정렬된 배열이다. 이러한 순열(1010)과 순열 항목(1012), 원자값 (1014) 클래스는, XQuery 질의의 정적 검사 시 XML 문서의 노드 이외의 데이터 값들을 표현함을 그 존재의 목적으로 한다. 예를 들어, $a in (1 to 10)과 같은 질의 시 a 변수는 XML 문서의 노드에 바인딩 되는 것이 아니라 1,2,3,4,5,6,7,8,9,10 이라는 원자 값들의 집합에 바인딩 되어야 한다. 이를 위해, $a는, 하나의 순열(1010)을 가지고, 이 순열(1010)은, 1부터 10까지의 값이 각각 기록된 원자 값(1014) 객체 10개를 포함한다.
도 11을 참조하여, 도 9에 따라 생성된 도 4의 XML 스키마 정의에 대한 주해 테이블과 이것으로의 접근을 위한 해쉬 테이블의 내용에 대하여 상세히 설명하도록 한다.
도 11에 도시된 바와 같이, 주해 테이블은, 인덱스(1142), 태그 이름(1144), 경로 요약(1146), 레벨(1148), 노드 종류(1150), 타입 이름(1152), 기본 타입(1154)을 열(column)로 한다. 또한, 태그 이름을 키로 하는 해쉬 테이블과 타입 이름을 키로 하여 주해 테이블의 항목을 검색하는 해쉬 테이블을 포함한다.
태그 이름 해쉬 테이블을 이용하여 billTo(1108)을 검색하면, 인덱스 값 9를 얻게 된다. 이 인덱스 값을 통해 주해 테이블의 항목에서 billTo(1126)에 관한 주해 정보를 획득하게 된다. 이러한 태그 이름을 키로 한 검색은, 경로 표현식의 처리에 이용된다.
타입 이름 해쉬 테이블은, //ELEMENT(*, USAddress)와 같은 경로 표현식에서의 노드 유형 검사(node kind test)에 있어, 해당 타입을 가지는 노드의 검색을 신속하게 하기 위해 이용된다. 여기에서, ELEMENT(*, USAddress)는 타입을 USAddress로 하는 엘리먼트 타입의 노드를 검사하라는 의미이다. 타입 이름 해쉬 테이블에서 USAddress(1114)은 인덱스 값 2,9를 가지며, 주해 테이블 항목 중 인덱스 값 2,9는, 각각 shipTo와 billTo이고, 이들의 노드 종류는 ELEMENT로서 조건에 만족하여 검색된다.
도 12를 참조하여, 본 발명에 따른 X Query 질의에 대하여 상세히 설명하도록 한다.
도 12에 도시된 XQuery 질의(1200)는, 사용자 함수 정의 부분과 상기 사용자 함수를 호출하여 이용하는 FLWOR 식 부분으로 구성된다. 예를 들어, 상기 사용자 함수는, purchaseOrders.xsd 스키마 정의를 따르는 구매 요청서를 XML 문서에서 도시별로 상품의 숫자를 출력하기 위한 질의이다.
상기 사용자 함수의 이름은 summary(1202)이고, 입력 인자의 이름은 in(1204), 타입은 element(purchaseOrder)*(1206)이다. 이는 0 또는 무한으로 반복되는 purchaseOrder라는 이름의 엘리먼트를 입력으로 함을 의미한다. 상기 사용자 함수의 출력은 summary라는 이름의 엘리먼트(1208)로 설정된다.
다음으로, 상기 사용자 함수 선언 내에서 FLWOR 절로 존재하며 기본 함수(시스템이 이미 지원하기로 약속한 함수)인, fn:distinct-values와 fn:count를 호출한다. return 절은 summary 엘리먼트(1222)를 루트로 하여 변수 d에 바인딩된 항목 또는 순열의 텍스트 값(1224)을 반환하도록 하고 있으며, $e에 바인딩된 순열 또는 항목을 count 엘리먼트(1226) 안에 출력하도록 선언되어 있다.
다음으로, 상기 사용자 함수를 호출하는 실제 질의를 보면 FOR 절에서 변수 a를 purchaseOrders.xsd 스키마 정의(1226)에 준하는 XML 문서들의 purchaseOrders 엘리먼트(1228)에 바인딩한다. 또한 WHERE 절에서는 기본 함수 fn:exists를 호출하면서 입력 값은 $a가 바인딩하는 순열 또는 순열 항목의 후손 노드(//) 중 item이라는 이름의 엘리먼트(1230)를 입력으로 한다. RETURN 절에서는 위에서 선언한 사용자 정의 함수 summary(1202)를 호출하면서 $a가 바인딩하는 순열 또는 순열 항목의 자식 노드(/)인 purchaseOrder를 입력으로 한다.
도 13을 참조하여, 본 발명에 따른 스키마 기반 질의 정적 검사 엔진에서의 질의 정적 검사의 전체적인 처리 흐름에 대하여 상세히 설명하도록 한다.
XQuery 질의에 대한 전체 검증은, XQuery 파스 트리를 입력받아 파스 트리 내 토큰들을 순회(1306)하면서 검증 항목들을 추출한다. 검증 항목에 대한 스키마 참조가 필요한 경우, 참조 스키마가 메모리상에 적재되어 있는지를 판단(1308)한다.
상기 판단 결과 적재되어 있지 않은 경우에는, 스키마를 입력 받고(1320), 이에 대한 스키마 트리를 생성(1322)하면서, 스키마 인덱스와 주해 정보를 생성(1326)한다. 상기 생성된 스키마 인덱스와 주해 정보를 이용하여, 질의 검증(1310)을 토큰별로 수행하며, 항목별로 질의 검증의 성공 여부를 검사(1312)한다. 이때, 상기 항목별 검증의 각 세부 처리 흐름에 대하여서는, 도 14 내지 도 15 및 도 17을 참조하여 이하에서 상세히 설명하도록 한다.
상기 검사 결과 질의 검증에 실패한 경우에, 검증 실패 표시 및 오류 항목 포인터를 출력(1328)하고 종료(1330)한다. 한편, 상기 검사 결과 질의 검증이 성공한 경우에는, 해당 토큰이 파스 트리의 마지막 토큰인지를 판별하여(1314), 마지막 토큰일 경우에는 질의 검증 성공 종료(1316)하고, 마지막 토큰이 아닌 경우에는 파스 트리 내 다음 토큰을 찾아 계속 파스 트리를 순회(1306)한다.
도 14를 참조하여, 본 발명에 따른 스키마 기반 질의 정적 검사 엔진에서의 질의 정적 검사 항목 중 질의에서 선언 또는 참조된 변수의 검사를 위한 처리 흐름에 대하여 상세히 설명하도록 한다.
질의 내 이용된 변수에 대해 변수의 선언인지 변수의 참조인지를 판별한다(1404).
상기 판별 결과 변수 참조인 경우에, 변수 리스트에 해당 변수 이름이 존재하는지를 판별한다(1406). 상기 판별 결과 변수 리스트에 해당 변수 이름이 존재하는 경우에, 변수 리스트에서 해당 변수에 바인딩된 순열 또는 순열 항목을 추출하는 단계(1410)를 거친다. 한편, 상기 판별 결과 변수 리스트에 해당 변수 이름이 존재하지 않는 경우에는, 검증 실패 표시 및 오류 항목 포인터를 출력(1408)하고 종료(1424)한다.
또는, 상기 판별 결과 변수 선언인 경우에, 변수를 변수 리스트에 삽입하고, 변수 선언 이후의 구문을 분석(1412)하여 구문의 유형을 판단(1414)한다.
상기 판단 결과 구문 유형이 경로 표현식인 경우에, 구조 검증 과정을 거쳐 변수에 해당 노드 참조하는 순열항목 객체를 바인딩(1416)하고, 상기 판단 결과 구문 유형이 함수 선언인 경우에는, 함수 검증 및 함수 선언에서의 출력 타입을 변수에 바인딩(1418)한다. 또는, 상기 판단 결과 구문 유형이 RETURN 절을 포함한 FLWOR 식일 경우에, RETURN 절의 루트 노드를 참조하는 순열 항목을 변수에 바인딩(1420)한다. 또는, 상기 판단 결과 구문 유형이 타입 선언인 경우에는, 선언된 타입의 시스템의 지원 유무를 검사하고, 변수에 바인딩(1422)한다. 이때, 실제 값은 XQuery 처리 이전에는 존재하지 않으므로, 바인딩되는 순열 항목은 타입 이름만을 가지는 원자값을 참조한다.
도 15를 참조하여, 본 발명에 따른 스키마 기반 질의 정적 검사 엔진에서의 질의 정적 검사 항목 중 이용되는 XML 문서와 질의 결과가 될 XML 문서에 대한 구조 검증을 위한 처리 흐름에 대하여 상세히 설명하도록 한다.
먼저, XQuery 내 표현식을 입력(1504)한다. 상기 입력된 표현식의 유형을 판별(1506)함에 따라 이후의 동작을 수행한다.
상기 판별 결과 상기 표현식이 단순 경로 표현식(함수와 변수 참조가 없는 XPath 표현식)일 경우, 경로 표현식의 각 axis별로 도 16에서 도시하는 스키마 색인을 이용한 노드 검색 방법에 따라 이를 처리한다. 만약 도 16에서 도시하는 노드 검색 방법에 따라 검색하였을 때 스키마 트리 상에 경로 표현식이 가리키는 노드가 존재하지 않으면 검증 실패 표시(1512) 후 종료(1532)한다.
또는, 상기 판별 결과 상기 표현식의 FLWOR 절을 포함한 ExprSingle일 경우에는, 경로 표현식을 모두 추출(1514)한다. 상기 추출된 경로 표현식에 함수나 변수의 참조가 존재할 경우에는, 도 14와 도 17에서 도시한 검증 과정에 따라 함수 검증 및 변수 검증을 수행하고 검증된 결과에 따라 순열 또는 순열 항목을 해당 변수에 바인딩하여 나머지 경로 표현식을 처리(1518)한다. ExprSingle에 RETURN 절이 존재하고 이 Return 절에 경로 표현식이 존재할 경우, RETURN 절에서 생성될 주해 테이블을 생성(1528)하고 이 ExprSingle 내에 또 다른 ExprSingle이 존재하는지를 검사(1530)하여 동일 작업을 반복 처리한다.
도 16을 참조하여, 본 발명에 따른 스키마 기반 질의 정적 검사 엔진에서의 스키마 색인을 이용하여 스키마 트리 내 노드를 검색하기 위하여 경로 표현식에서의 Axis의 처리 방법에 대하여 상세히 설명하도록 한다.
parent::v는 v 노드의 부모 노드를 찾기 위한 Axis 선언이다. kind(x)는, x 노드의 노드 유형을 반환하는 슈도-함수(pseudo-function)이며, start(x) 및 end(x)는, 노드 x의 인덱스 값과 영역 종료 값을 반환하는 슈도-함수이다. empty-sequence()는, 아무런 순열 항목을 가지지 않는 순열을 반환하는 슈도-함수이다.
도 17을 참조하여, 본 발명에 따른 스키마 기반 질의 정적 검사 엔진에서의 질의 정적 검사 항목 중 이용되는 연산자와 함수에 대한 검사를 수행하는 처리 흐름에 대하여 상세히 설명하도록 한다.
XQuery에서 =, <와 같은 연산자들은, 모두 내장 함수로 대응 구현되어 있으며, XQuery 질의 처리기 내부에서도 이를 호출하여 계산하도록 XQuery 표준에서 정의하고 있다.
도 17에 도시된 바와 같이, 연산자&함수 검증의 시작은 검증할 개체의 입력(1704)을 통해 이루어진다.
개체의 유형이 연산자(operator)일 경우에는 연산자의 연산 항목(operand)의 타입을 입력(1712)받는다. 이때에는, 노드의 타입 이름, 변수에 바인딩된 순열 항목의 타입 이름, 함수의 출력 타입이 입력이 될 수 있다.
그리고, 해당 타입에 대하여 해당 타입을 지원하는 대응 함수가 존재하는지를 검사(1714)하여, 존재하는 경우에는 대응 함수의 출력 타입을 반환(1726)하며, 존재하지 않는 경우에는 타입 오류로 인식하여 검증 실패 표시 및 오류 항목 포인터로 출력한(1720) 후 종료(1728)한다.
또는, 개체의 유형이 함수일 경우에는, 해당 함수의 이름이 함수 리스트에 이미 존재할 경우, 함수 요약에서 입력 객체들을 추출하여 입력 인자의 타입과 입력 객체의 입력 타입이 일치 또는 호환 가능한지를 검사한다(1716). 한편, 함수 리스트에 존재하지 않지만, 사용자 함수 정의가 존재할 경우, 함수 선언 내 변수 및 구조 검증(1718)을 수행하고, 이를 함수 리스트에 삽입하고 검증 과정(1716)을 계속 수행한다.
도 18a 내지 18c를 참조하여, 도 4의 XML 스키마 정의 및 도 12의 XQuery 질의를 이용하여 XQuery 질의의 정적 검사 시스템에 의해 수행되는 질의의 정적 검사 과정 동안의 내부 자료 구조 내용들에 대하여 상세히 설명하도록 한다.
도 18a에서 도시하는 자료 구조는, 도 12에서의 XQuery 질의(1200)를 1226까지 수행했을 때의 모습을 도시한다. 여기에서는, 아직 사용자 정의 함수 선언(1202)이 시스템에 적재되어 있지 않으므로, 함수 리스트(1808)에는, 내장 함수의 목록과 이들 함수의 입출력 형식(1810)만을 포함한다. 또한, 변수 리스트 (1804)에는, FOR 절에서 선언한 변수 a가 적재되어 있으며, 이 변수 a는 주해 테이블(1802)의 루트인 purchaseOrders에 바인딩 되어 있다.
도 18b에서 도시하는 자료 구조는, 사용자 정의 함수 summary를 적재하였으며, 해당 함수의 입출력 형식 또한 같이 적재되어 있다. 상기 적재된 함수의 입출력 형식(1816)과 입력 인자의 경로 표현식의 처리에 의하여 purchaseOrder(1818)가 summary가 출력하는 최종 항목임을 판별해 낸다.
도 18c에서 도시하는 자료 구조는, XQueryry 질의의 검증에 따른 최종적인 자료 구조의 모습이다. 여기에서는, 변수 리스트(1820) 내 모든 변수들이 노드 또는 순열 항목으로 바인딩 되어 있으며, summary 함수의 호출로 인해 생성되는 RETURN절에서 선언된 결과 XML 문서의 구조에 대한 주해 테이블(1824)이 작성된다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로, 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
도 1은 본 발명에 따른 XQuery 정적 검사 시스템의 개략적인 일실시예 도면.
도 2는 본 발명에 따른 XQuery 정적 검사 시스템의 구체적인 일실시예 도면.
도 3은 본 발명에 따른 항목별 검증 모듈의 일실시예 세부 구조도.
도 4는 본 발명에 따른 XML 스키마 정의를 도시한 일실시예 도면.
도 5는 도 4에 도시된 XML 스키마 정의를 이용하여 XML 스키마 파서가 생성하는 스키마 그래프의 구성 요소 및 구조를 도시한 도면.
도 6은 본 발명에 따른 XQuery 정적 검사 시스템에서 스키마 접근을 위한 인덱스를 생성하기 위하여, 도 5에 도시된 스키마 그래프를 트리로 가공한 형태의 도면.
도 7은 본 발명에 따른 XQuery 정적 검사 시스템이 스키마 정의의 각 요소에 신속하게 접근하기 위해 스키마 트리에 적용하는 색인을 도시한 일실시예 도면.
도 8은 본 발명에 따른 XQuery 정적 검사 시스템이 신속하게 스키마를 참조하기 위하여 이용하는 스키마 색인의 생성 방법을 도시한 일실시예 흐름도.
도 9는 본 발명에 따른 XQuery 정적 검사 시스템에서 스키마 색인을 위한 자료 구조를 도시한 UML 클래스 도면.
도 10은 본 발명에 따른 XQuery 정적 검사 시스템에서 스키마 색인을 이용하여 질의에 대한 정적 검사를 수행하기 위한 추가 자료 구조를 도시한 UML 클래스 도면.
도 11은 도 4에 도시된 스키마 정의에 대한 XQuery 정적 검사 시스템의 예시 적인 스키마 색인의 내용을 도시한 도면.
도 12는 본 발명에 따른 XQuery 질의를 도시한 일실시예 도면.
도 13은 본 발명에 따른 XQuery 질의의 정적 검사를 위한 과정을 도시한 일실시예 흐름도.
도 14는 본 발명에 따른 XQuery 질의의 정적 검사 항목 중 변수의 유효성 검사를 수행하기 위한 과정을 도시한 흐름도.
도 15는 본 발명에 따른 XQuery 질의의 정적 검사 항목 중 질의에서 적시하는 XML 문서의 구조가 XML 스키마 정의에 준하는지 검사하기 위한 과정을 도시한 일실시예 흐름도.
도 16은 본 발명에 따른 XQuery 질의에 대한 구조 검증에서 질의 내 XPath 경로 표현식의 각 Axis들에 대하여 스키마 색인을 이용한 방법을 도시한 도면.
도 17은 본 발명에 따른 XQuery 질의의 정적 검사 항목 중 질의 내 이용되는 연산자와 함수의 검증 과정을 도시하는 일실시예 흐름도.
도 18a 내지 18c는 도 4의 XML 스키마 정의 및 도 12의 XQuery 질의를 이용하여 XQuery 질의의 정적 검사 시스템에 의해 수행되는 질의의 정적 검사 과정 동안의 내부 자료 구조 내용들을 도시한 도면.

Claims (10)

  1. XQuery 질의를 입력으로 하여, 질의의 문법적인 오류를 분석하고, 오류가 없는 경우에 XQuery 파스 트리를 출력하는 XQuery 파서;
    XML 스키마 정의들을 입력으로 하여, 문법적인 검사를 수행하고, 오류가 없는 스키마 정의에 대하여 접근 가능한 스키마 그래프를 출력하는 XML 스키마 파서; 및
    상기 XQuery 파서로부터 입력받은 XQuery 파스 트리에 대한 정적 검사를 수행하며, 상기 정적 검사 수행에 있어서 상기 XML 스키마 파서로부터 입력받은 스키마 그래프를 이용하는 스키마 기반 질의 정적 검사 엔진을 포함하는 것을 특징으로 하는 XQuery 질의를 위한 스키마 기반 정적 검사 시스템.
  2. 제1항에 있어서, 상기 스키마 기반 질의 정적 검사 엔진은,
    XQuery 파스 트리를 순회하면서 검사를 수행하는 파스 트리 순회기;
    상기 XQuery 파스 트리 내 임의 토큰이 검증 항목일 경우에 호출되는 검증 항목 판별기; 및
    해당 검사 항목의 유형에 따라 호출되는 항목별 검증 모듈을 포함하되,
    상기 항목별 검증 모듈은, XQuery 질의의 적정 검사를 수행하기 위해 필요한 스키마 인덱스와 주해 정보가 메모리 상에 적재되어 있는지를 검사하고, 검사 결과에 따라 이후 검증 동작을 상이하게 수행하는 것을 특징으로 하는 XQuery 질의를 위한 스키마 기반 정적 검사 시스템.
  3. 제2항에 있어서, 상기 항목별 검증 모듈은,
    상기 검사 결과 적재되어 있는 경우에, 이를 참조하여 검증을 수행한 후 검사 결과를 상기 검증 항목 판별기에 출력하는 것을 특징으로 하는 XQuery 질의를 위한 스키마 기반 정적 검사 시스템.
  4. 제2항에 있어서, 상기 항목별 검증 모듈은,
    상기 검사 결과 적재되어 있지 않은 경우에, 상기 XML 스키마 파서에 스키마 그래프의 입력을 요구하는 것을 특징으로 하는 XQuery 질의를 위한 스키마 기반 정적 검사 시스템.
  5. 제4항에 있어서,
    상기 XML 스키마 파서로부터 입력받은 스키마 그래프를 스키마 트리로 변환하는 스키마 트리 생성기; 및
    상기 스키마 트리 생성기로부터 입력받은 스키마 트리를 이용하여 스키마 인덱스 및 주해 정보를 생성하여 메모리 상에 적재시키는 스키마 인덱스와 주해 생성기를 더 포함하는 것을 특징으로 하는 XQuery 질의를 위한 스키마 기반 정적 검사 시스템.
  6. 제5항에 있어서, 상기 생성된 스키마 인덱스는,
    경로 표현식에 따른 스키마 정의 상의 빠른 노드 검색을 위해 인덱스 값, 영역 종료 값, 경로 요약을 포함하는 것을 특징으로 하는 XQuery 질의를 위한 스키마 기반 정적 검사 시스템.
  7. 제5항에 있어서, 상기 생성된 주해 정보는,
    XQuery 질의 처리 결과로 얻어지는 데이터의 타입 정보를 추출하기 위하여, 상기 생성된 스키마 인덱스와 같이 부여되어 타입 이름, 기본 타입, 노드 유형 중 적어도 하나를 포함하는 것을 특징으로 하는 XQuery 질의를 위한 스키마 기반 정적 검사 시스템.
  8. 제2항에 있어서, 상기 항목별 검증 모듈은,
    XQuery 질의 내에 선언되고 참조되는 변수들에 대하여 선언 및 참조가 바르게 이루어졌는지를 검사하는 변수 검증 모듈;
    스키마 기반 유효성 검증을 수행하는 구조 검증 모듈;
    XQuery 질의 내에 참조되는 연산자와 함수들의 유효성을 판정하는 연산자와 함수 검증 모듈; 및
    각 항목들의 타입이 바르게 이용되는지를 판별하는 데이터 타입 검증 모듈을 포함하는 것을 특징으로 하는 XQuery 질의를 위한 스키마 기반 정적 검사 시스템.
  9. XQuery 파스 트리를 입력받아, 각 XQuery 파스 트리 내의 노드들을 순회하면서 검증 항목을 추출하는 단계;
    상기 추출된 검증 항목에 대한 스키마 참조가 필요한 경우에, 참조 스키마가 메모리에 적재되어 있는지를 판단하는 단계;
    상기 판단 결과 적재되어 있지 않은 경우에, 스키마를 입력받아, 스키마 트리를 생성하면서, 스키마 인덱스와 주해 정보를 생성하는 단계; 및
    상기 판단 결과 적재되어 있는 경우에, 질의 검증을 수행하는 단계를 포함하는 것을 특징으로 하는 XQuery 질의를 위한 스키마 기반 정적 검사 방법.
  10. 제9항에 있어서,
    상기 생성된 스키마 인덱스와 주해 정보를 이용하여, 항목별로 질의 검증의 성공 여부를 검사하는 단계;
    상기 검사 결과 실패한 경우에, 검증 실패 표시 및 오류 항목 포인터를 출력하는 단계; 및
    상기 검사 결과 성공한 경우에, XQuery 파스 트리 내 마지막 토큰인지를 확인하는 단계를 더 포함하는 것을 특징으로 하는 XQuery 질의를 위한 스키마 기반 정적 검사 방법.
KR1020070123248A 2006-12-05 2007-11-30 XQuery 질의를 위한 스키마 기반 정적 검사 시스템및 방법 KR100930108B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20060122345 2006-12-05
KR1020060122345 2006-12-05

Publications (2)

Publication Number Publication Date
KR20080052399A KR20080052399A (ko) 2008-06-11
KR100930108B1 true KR100930108B1 (ko) 2009-12-07

Family

ID=39807197

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070123248A KR100930108B1 (ko) 2006-12-05 2007-11-30 XQuery 질의를 위한 스키마 기반 정적 검사 시스템및 방법

Country Status (1)

Country Link
KR (1) KR100930108B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8739026B2 (en) 2011-09-06 2014-05-27 Hewlett-Packard Development Company, L.P. Markup language schema error correction

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100491725B1 (ko) 2002-12-23 2005-05-27 한국전자통신연구원 엑스퀘리를 사용하여 통합 스키마를 정의하는 데이터 통합시스템 및 그 방법
KR20050053671A (ko) * 2002-10-15 2005-06-08 인터내셔널 비지네스 머신즈 코포레이션 고성능 스키마 검증을 위한 xml 스키마의 주해된 자동인코딩

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050053671A (ko) * 2002-10-15 2005-06-08 인터내셔널 비지네스 머신즈 코포레이션 고성능 스키마 검증을 위한 xml 스키마의 주해된 자동인코딩
KR100491725B1 (ko) 2002-12-23 2005-05-27 한국전자통신연구원 엑스퀘리를 사용하여 통합 스키마를 정의하는 데이터 통합시스템 및 그 방법

Also Published As

Publication number Publication date
KR20080052399A (ko) 2008-06-11

Similar Documents

Publication Publication Date Title
US8515999B2 (en) Method and system providing document semantic validation and reporting of schema violations
Nentwich et al. xlinkit: A consistency checking and smart link generation service
US7437374B2 (en) Efficient XML schema validation of XML fragments using annotated automaton encoding
US7721270B2 (en) Information converter and a method for transforming information
US7467157B1 (en) Generation of semantically valid xpath expressions
US20140114994A1 (en) Apparatus and Method for Securing Preliminary Information About Database Fragments for Utilization in Mapreduce Processing
JP6720641B2 (ja) 多言語データティアのデータ制約
US20060167869A1 (en) Multi-path simultaneous Xpath evaluation over data streams
US20040010754A1 (en) System and method for transformation of XML documents using stylesheets
US20080320031A1 (en) Method and device for analyzing an expression to evaluate
US20100023486A1 (en) Static typing of xquery expressions in lax validation content
Lampropoulos et al. Automatic WSDL-guided test case generation for PropEr testing of web services
Kilpeläinen Checking determinism of XML Schema content models in optimal time
US20100153430A1 (en) Method of and Apparatus for Extraction and Analysis of Macro Operations within Query Language Statement
US20060036657A1 (en) Full-text search integration in XML database
Benedikt et al. Schema-based independence analysis for XML updates
KR100930108B1 (ko) XQuery 질의를 위한 스키마 기반 정적 검사 시스템및 방법
Koch et al. Attribute grammars for scalable query processing on XML streams
Nogatz et al. From xml schema to json schema-comparison and translation with constraint handling rules
Poulding et al. The automated generation of humancomprehensible XML test sets
Zemke XMLQuery
Kirkegaard et al. Type checking with XML Schema in Xact
Kirchner et al. Xemantics: a rewriting calculus-based semantics of XSLT
Cheney Satisfiability algorithms for conjunctive queries over trees
Groppe et al. Satisfiability-test, rewriting and refinement of users’ XPath queries according to XML schema definitions

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee