KR101924747B1 - 유연성을 갖춘 메타데이터 구성 기법 - Google Patents

유연성을 갖춘 메타데이터 구성 기법 Download PDF

Info

Publication number
KR101924747B1
KR101924747B1 KR1020177032448A KR20177032448A KR101924747B1 KR 101924747 B1 KR101924747 B1 KR 101924747B1 KR 1020177032448 A KR1020177032448 A KR 1020177032448A KR 20177032448 A KR20177032448 A KR 20177032448A KR 101924747 B1 KR101924747 B1 KR 101924747B1
Authority
KR
South Korea
Prior art keywords
type
information
files
namespace hierarchy
input
Prior art date
Application number
KR1020177032448A
Other languages
English (en)
Other versions
KR20170127060A (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 KR20170127060A publication Critical patent/KR20170127060A/ko
Application granted granted Critical
Publication of KR101924747B1 publication Critical patent/KR101924747B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • G06F16/166File name conversion
    • G06F17/301
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

다양한 실시예들은 복수의 타입 시스템간의 타입 레졸루션을 추출하는 능력을 제공한다. 적어도 하나의 타입은 하나 이상의 프로그램적으로 액세스 가능한 파일(들)에서 설명될 수 있다. 일부 실시예에서, 다른 타입 시스템을 이용하는 애플리케이션은 타입 설명이 있는 곳의 위치에 대한 지식 없이 적어도 하나의 타입 시스템의 유형에 프로그램적으로 액세스하고 타입 시스템의 타입을 리졸브할 수 있다. 대안적으로 또는 추가적으로, 하나 이상의 프로그램적으로 액세스 가능한 파일(들)에 포함된 타입 설명은 적어도 부분적으로 타입 설명에 근거하여 하나 이상의 새로운 프로그램적으로 액세스 가능한 파일(들)로 분석되고 재구성될 수 있다.

Description

유연성을 갖춘 메타데이터 구성 기법{FLEXIBLE METADATA COMPOSITION}
컴퓨팅 장치는 종종 컴퓨팅 장치의 하드웨어 및/또는 소프트웨어 자원을 처리하는 방식으로 운영체제를 실행한다. 일부 경우에, 운영체제는 단순화된, 프로그램적 액세스를 그 자원에 제공할 수 있다. 예를 들어, 운영체제는 다양한 구성요소를 노출하기 위해 애플리케이션 프로그래밍 인터페이스(application programming interface: API)를 포함할 수 있다. 애플리케이션이 API와 연관된 타입을 안다면, 애플리케이션은 API와는 다른 프로그램 언어 및/또는 타입 시스템(type system)을 통해 성공적으로 API를 호출할 수 있다. 예를 들어, API는 하나 이상의 입력 및/또는 출력 매개변수(들)(parameter)를 포함할 수 있다. API를 호출하기 위해, 프로그래머는 API의 매개변수뿐만 아니라 매개변수와 연관된 데이터 타입도 결정한다.
전술한 바와 같이, API는 호출 프로그램 언어(calling programming language)와 다른 타입 시스템으로 설명될 수 있다. 서로 다른 타입 시스템을 연결하기 위해, 프로그래머는 일반적으로 타입 시스템간에 변환하는 래퍼 코드(wrapper code)를 작성한다. 프로그래머가 API 액세스를 프로그램에 포함시키는 한 가지 방법은 API 정의를 하나 이상의 파일(들) 및/또는 네임스페이스(namespace)를 통해 소스 코드에 포함시키는 것이다. 성공적으로 파일 및/또는 네임스페이스를 소스 코드에 통합시키기 위해, 소스 코드는 파일/네임스페이스의 특정 위치에 대한 참조(예를 들어, 하드 코드 경로(hardcoded path), 그 경로로 레지스트리 키에 접속, 등)를 포함하도록 구성될 수 있다. 위치와 파일 이름 및/또는 네임스페이스 이름이 변경되면, 코드 및/또는 소프트웨어 툴이 적절한 변화로 업데이트될 때까지 연결은 깨진다.
본 요약은 이하의 상세한 설명에서 보다 자세히 설명될 개념들 중 선택된 것들을 단순화된 형태로 소개하고자 제공된다. 본 요약은 청구 대상의 필수 특성 또는 핵심 특성을 나타내고자 하는 것이 아니며, 청구 대상의 범위를 한정하기 위해 사용되는 것도 아니다.
다양한 실시예들은 복수의 타입 시스템간의 타입 레졸루션(type resolution)을 추출하는 능력을 제공한다. 적어도 하나의 타입은 하나 이상의 프로그램적으로 액세스 가능한 파일(들)에서 설명될 수 있다. 일부 실시예에서, 다른 타입 시스템을 이용하는 애플리케이션은 타입 설명이 있는 곳의 위치에 대한 지식 없이 타입 시스템의 유형에 프로그램적으로 액세스하고 타입 시스템의 유형을 리졸브할(resolve) 수 있다. 대안적으로 또는 추가적으로, 하나 이상의 프로그램적으로 액세스 가능한 파일(들)에 포함된 타입 설명은 적어도 부분적으로 타입 시스템 설명에 근거하여 하나 이상의 새로운 프로그램적으로 액세스 가능한 파일(들)로 분석되고 재구성될 수 있다.
같은 번호가 비슷한 특징을 참조하기 위해 도면 전반에 걸쳐 사용된다.
도 1(a)는 본원에 설명된 다양한 원리들이 하나 이상의 실시예에 따라 이용될 수 있는 운영 환경을 도시한다.
도 1(b)는 본원에 설명된 다양한 원리들이 하나 이상의 실시예에 따라 이용될 수 있는 운영 환경을 도시한다.
도 2는 하나 이상의 실시예에 따른 아키텍처를 도시한다.
도 3은 하나 이상의 실시예에 따른 흐름도를 도시한다.
도 4는 하나 이상의 실시예에 따라 관계도를 도시한다.
도 5는 하나 이상의 실시예에 따른 흐름도를 도시한다.
도 6은 하나 이상의 실시예를 구현하는데 이용될 수 있는 예시적인 시스템을 도시한다.
개요
다양한 실시예들은 복수의 타입 시스템간의 타입 레졸루션을 추출하는 능력을 제공한다. 하나의 타입 시스템을 이용하는 애플리케이션은 타입 시스템간의 연결 방법에 대해 알고 있다면 두 번째 타입 시스템을 호출할 수 있다. 예를 들어, 타입 시스템의 특징(예컨대, 데이터 타입, 데이터 타입의 동작, 함수 호출 매개변수, 이벤트, 등)은 하나 이상의 프로그램적으로 액세스 가능한 파일(들)에서 설명될 수 있다. 애플리케이션은 파일에 액세스하고 다른 타입 시스템을 리졸브할 수 있다. 일부 실시예에서, 타입 레졸루션이 추출되어 애플리케이션은 액세스할 파일 및/또는 파일이 있는 위치에 대한 사전 지식 없이 설명에 액세스할 수 있다.
다음의 논의에서, "운영 환경(Operating Environment)"이라는 제목의 섹션이 제공되고, 하나 이상의 실시예를 이용할 수 있는 복수의 환경을 설명한다. 이어서, "타입 레졸루션 아키텍처(Type Resolution Architecture)"라는 제목의 섹션은 프로그램적 타입 시스템 레졸루션을 가능하게 하는 아키텍처를 설명한다. 다음, "타입 설명 저장(Type Description Storage)"이라는 제목의 섹션은 타입 설명의 유연한 저장이 가능하도록 사용될 수 있는 다양한 방법을 설명한다. 마지막으로, "예시적인 시스템(Example System)"이라는 제목의 섹션은 하나 이상의 실시예를 구현하는데 이용될 수 있는 예시적인 시스템을 설명한다.
이하에서 설명하는 다양한 실시예의 개요를 제공하였고, 이제 하나 이상의 실시예가 구현될 수 있는 예시적인 운영 환경을 고려한다.
운영 환경
도 1(a)와 1(b)는 하나 이상의 실시예에 따른 운영 환경을 도시하는데, 주로 100a와 100b에서 나타난다. 도 1(a)는, 후술하는 바와 같이, 하나 이상의 메타데이터 파일의 생성과 관련하여 이용될 수 있는 예시적인 운영 환경을 도시한다. 도 1(a)의 환경은 "빌드 타임(build time)" 환경으로 고려될 수 있다. 도 1(b)는 유연한 타입 시스템 레졸루션과 관련하여 이용될 수 있는 예시적인 운영 환경을 도시한다. 도 1(b)의 환경은 런타임(run time) 환경으로 고려될 수 있다. 일부 실시예에서, 운영 환경(100a, 100b)은 적어도 일부 유사한 구성요소를 가진다. 따라서, 간결하게 하기 위해, 도 1(a)와 도 1(b)는 함께 설명된다. 도 1(a)와 관련된 유사한 구성요소는 "1XXa"의 명명 규칙(naming convention)을 갖는 것으로 식별하고, 도 1(b)와 관련된 구성요소는 "1XXb"의 명명 규칙을 갖는 것으로 식별한다. 유사하게, 운영 환경에 특정된 구성요소는 "1XX"로 간단히 식별한다.
환경(100a, 100b)은 각각 하나 이상의 프로세서(들)(104a,104b) 및 하나 이상의 컴퓨터 판독 가능한 저장 매체(106a, 106b)를 갖는 컴퓨팅 장치(102a, 102b)를 포함한다. 컴퓨터 판독 가능한 저장 매체는, 비제한적인 예로서, 일반적으로 컴퓨팅 장치와 연관된 휘발성과 비휘발성 메모리 및/또는 저장 매체의 모든 형태를 포함할 수 있다. 이러한 매체는 ROM과 RAM, 플래시 메모리, 하드 디스크, 분리형 매체 등을 포함할 수 있다. 컴퓨팅 장치의 하나의 구체적인 예를 아래 도 6에 도시하여 설명한다.
또한, 컴퓨팅 장치(102a, 102b)는 운영체제(들)(OS)(108a, 108b)와 애플리케이션(들)(110a, 110b)을 포함한다. 운영체제(108a, 108b)는 컴퓨팅 장치(102a, 102b)의 소프트웨어 및/또는 하드웨어 자원(들)을 처리하도록 구성된 기능을 제시한다. 이는 메모리 관리, 파일 관리, 서비스, 함수, 자원 관리, 주변 장치 관리 등을 포함할 수 있다. 애플리케이션(들)(110a, 110b)은 일반적으로 운영체제(들)(108a, 108b)에 의해 지원되는 컴퓨팅 장치(102a, 102b) 상에서 실행하도록 구성된 소프트웨어를 제시한다. 애플리케이션(들)(110a, 110b)은, 이후에 상세히 설명하는 바와 같이, 운영체제(들)(108a, 108b)와 동일 및/또는 상이한 타입 시스템에서 구현될 수 있다.
컴퓨팅 장치(102a, 102b)는 또한 하나 이상의 소프트웨어 인터페이스(들)(112a, 112b)를 포함할 수 있는데, 소프트웨어 인터페이스(들)(112a, 112b)는 소프트웨어 및/또는 애플리케이션(들)에 의해 제공되는 함수, 서비스, 데이터, 등에 대한 프로그램적 액세스를 제시한다. 소프트웨어 인터페이스(들)(112a, 112b)는 운영체제(들)(108a, 108b) 및/또는 애플리케이션(들)(110a, 110b)으로 프로그램적 액세스가 가능하도록 할 수 있다. 예를 들어, 애플리케이션(들)(110a, 110b)은 소프트웨어 인터페이스(들)(112a, 112b)를 호출하여 운영체제(들)(108a, 108b)가 제공하는 기능에 액세스할 수 있다. 일부 실시예에서, 소프트웨어 인터페이스와 다른 타입 시스템을 이용하는 애플리케이션(들)(112a, 112b)은, 이후에 상세히 설명하는 바와 같이, 타입 차이를 프로그램적으로 리졸브할(resolve) 수 있다.
또한, 컴퓨팅 장치(102a, 102b)는, 하나 이상의 메타데이터 파일(들)(114a, 114b)을 포함하는데, 메타데이터 파일(들)(114a, 114b)은 입력 매개변수 타입(input parameter type), 매개변수 호출 순서(parameter calling order), 인터페이스 간의 관계 등과 같은 소프트웨어 인터페이스(들)(112a, 112b), 운영체제(들)(108a, 108b), 및/또는 애플리케이션(들)(110a, 110b)과 관련된 정보를 포함하는 하나 이상의 기계 판독 가능한(machine-readable) 파일(들)을 제시한다. 대안적으로 또는 부가적으로, 소프트웨어 인터페이스(들)는 프린터, 스캐너, 스마트 폰 등과 같은 컴퓨팅 장치(102a, 102b)에 연결되는 주변 장치와 연관될 수 있다. 일부 실시예에서, 메타데이터 파일(들)(114a, 114b)은, 이후에 상세히 설명하는 바와 같이, 임의의 적절한 방식으로 인터페이스(들)를 설명하도록 구성될 수 있다.
컴퓨팅 장치(102a)는 또한 병합 모듈(들)(merge module)(116)을 포함한다. 병합 모듈(들)(116)은 하나 이상의 메타데이터 파일(들)을 판독하고, 파일의 콘텐츠를 분석하며, 재구성된 콘텐츠를 포함하는 하나 이상의 새로운 메타데이터 파일(들)을 출력할 수 있는 기능을 제시한다. 일부 실시예에서, 콘텐츠는 적어도 부분적으로 타입 설명에 근거하여 재편성될 수 있다.
컴퓨팅 장치(102b)는 타입 레졸루션 모듈(들)(type resolution module)(118)을 포함한다. 타입 레졸루션 모듈(들)(118)은 관련된 타입의 데이터에 액세스하기 위한 요청을 수신하고, 타입 레졸루션 정보를 찾아내도록 구성된 기능을 제시한다. 일부 실시예에서, 타입 레졸루션 모듈(들)(118)은, 사용자의 입력 없이, 위치 변경 정보와는 별도로 타입 레졸루션 정보를 찾아낼 수 있다. 예를 들어, 정보가 첫 번째 파일에서 두 번째 파일로 이동되었을 때, 타입 레졸루션 모듈(들)(118)은, 이후에 상세히 설명하는 바와 같이, 사용자 입력 없이, 인터페이스 설명 정보를 찾아낼 수 있다.
컴퓨팅 장치(102a, 102b)는, 비제한적인 예로서, 데스크톱 컴퓨터와 휴대용 컴퓨터, 노트북 컴퓨터, 개인 휴대 정보 단말기(personal digital assistant: PDA) 같은 포켓용 컴퓨터, 휴대폰 등과 같은 임의의 적절한 컴퓨팅 장치로 구현될 수 있다.
예시적인 운영 환경을 설명하였고, 이제 위치 파일명(location file name) 및/또는 위치와 관계없이 타입 레졸루션을 할 수 있도록 구성된 타입 레졸루션 아키텍처에 대해 논의한다.
타입 레졸루션 아키텍처
프로그램 언어가 기술적으로 발전함에 따라, 그들의 역량도 발전한다. 예를 들어, 제1 프로그램 언어로 작성된 애플리케이션이 제2 프로그램 언어로 작성된 소프트웨어를 호출할 수 있다. 본질적으로, 프로그램 언어는 다른 타입 시스템을 가진다. 따라서, 다른 타입 시스템에 있는 소프트웨어를 성공적으로 호출하기 위해, 제1 프로그램 언어는 변하는 타입을 레졸루션하기 위한 기법을 사용한다. 예를 들어, 프로그래머는 타입간에 변환하는 래퍼 코드를 수동으로 작성할 수 있다. 대안적으로, 타입 시스템 정의를 파일에 저장하여 프로그램적으로 액세스할 수 있다.
타입의 정의를 포함하는 파일에 프로그램적으로 액세스하는 것은 애플리케이션이 런타임에서의 역량과 설명을 알아내도록 할 수 있다. 그러나, 파일에 액세스하는 것은 액세스하는 파일뿐만 아니라 파일의 위치도 아는 것을 의미한다. 파일의 컨텐츠 변경 및/또는 파일의 위치 변경이 있는 경우, 제대로 업데이트하지 않는다면 파일에 액세스하는 애플리케이션은 잠재적으로 실패할 수 있다. 이것은 때때로 애플리케이션(들)과 파일(들)간의 의도하지 않은 결합을 생성할 수 있다.
다양한 실시예들은 복수의 타입 시스템간의 타입 레졸루션을 추출하는 능력을 제공한다. 타입 레졸루션과 연관된 정보는 프로그램적으로 액세스 가능한 파일에 저장될 수 있다. 일부 실시예에서, 하나의 타입 시스템을 이용하는 애플리케이션은 파일에 대한 액세스를 통해 두 번째 타입 시스템을 다이내믹하게 리졸브할 수 있다. 대안적으로 또는 부가적으로, 애플리케이션은 액세스할 파일(들) 및/또는 파일(들)이 있는 위치에 대한 지식 없이 파일에 액세스할 수 있다.
하나 이상의 실시예에 따른 예시적인 아키텍처(200)를 도시한 도 2를 고려한다. 아키텍처(200)는 컴퓨팅 장치 상에서 실행하도록 구성될 수 있는 운영체제(202)를 포함한다. 간결하게 하기 위해, 운영체제(202)는 그 전체가 도시되지 않음을 이해해야 한다. 운영체제(202)는 컴퓨팅 장치와 관련된 자원을 처리하도록 구성된 하나 이상의 운영체제 구성요소(들)(204)를 포함한다. 일부 실시예에서, 운영체제 구성요소(들)(204)는 자원 관리와 연관된 하나 이상의 서비스(들) 및/또는 특징(들)뿐만 아니라 자원에 대한 프로그램적 액세스도 제공 할 수 있다. 운영체제 구성요소(들)(204)는 또한 기본 요소(basic element)로부터 구축된 복합 요소(complex element)뿐만 아니라, 운영체제(202)와 연관된 기본 요소도 포함할 수 있다. 본 예에서는 운영체제(202)에 의해 제공된 기능을 노출하는 아키텍처를 도시하지만, 청구 대상의 사상에서 벗어나지 않는 한 애플리케이션의 다른 적절한 유형이 제공하는 기능을 노출하는 아키텍처를 적용할 수 있다는 것을 이해해야 할 것이다.
일부 실시예에서, 운영체제 구성요소(들)(204)는 운영체제 인터페이스(들)(206)로서 여기 도시된 하나 이상의 인터페이스(들)를 통해 노출될 수 있다. 이는 애플리케이션 프로그래밍 인터페이스(API)와 같은 임의의 적절한 형태의 인터페이스일 수 있다. 애플리케이션은, 이후에 상세히 설명하는 바와 같이, 운영체제 인터페이스(들)(206)를 호출 및/또는 실행하여 운영체제 구성요소(들)(204)가 제공하는 기능에 액세스할 수 있다. 일부 경우에, 애플리케이션은 운영체제 인터페이스(들)(206)를 설명하는데 사용되는 타입 시스템과 다른 타입 시스템을 이용한다. 일부 경우에, 운영체제 인터페이스(들)(206)는, 애플리케이션 바이너리 인터페이스(들)(application binary interface: ABI)를 포함할 수 있다. ABI는, 기계 수준(machine-level)에서, 함수, 방법, API 등을 호출하는 바이너리 콘트랙트(binary contract)를 설명한다. 바이너리 콘트랙트는 함수와 연관된 식별 또는 이름, 함수를 호출하는데 사용될 수 있는 서명, 매개변수와 연관된 함수 및/또는 데이터 타입으로 전달되는 매개변수의 순서 등을 포함할 수 있다. 대안적으로 또는 부가적으로, 바이너리 콘트랙트는 타입 시스템의 적어도 하나의 유형과 연관된 동작을 노출하기 위한 정의 및/또는 규칙을 포함할 수 있다.
운영체제(202)는 또한 다양한 메타데이터(208)를 포함한다. 메타데이터(208)는, 버전 정보, 이용 가능한 방법, 인터페이스(들)가 취하는 매개변수, 매개변수의 데이터 타입, 매개변수의 전달 순서, 데이터 타입 동작 및/또는 레졸루션 정보 등과 같은, 다양한 관점의 연관된 운영체제 인터페이스(들)(206)를 설명하는 타입 레졸루션 정보를 포함할 수 있다. 일부 실시예에서, 메타데이터는 인터페이스(들)간의 관계 설명 및/또는 객체 지향 방식(object-oriented manner)으로 인터페이스(들)를 설명하는 정보 같은 인터페이스와 연관된 계층적 정보(hierarchal information)를 포함할 수 있다. 메타데이터는 또한 클래스 설명, 클래스의 연관 방법 및 매개변수 등을 포함할 수 있다. 일부의 경우, 메타데이터는 추상 타입 시스템(abstract type system)(예를 들어, 특정 프로그램 언어(specific programming language)와는 별도의 타입 시스템)을 사용하는 인터페이스를 기술할 수 있다. 대안적으로 또는 부가적으로, 메타데이터는 추상 타입 시스템과 같은 특별한 타입 시스템(particular type system)에 대한 설명을 포함할 수 있다. 결과적으로, 특정 프로그램 언어(들)는 특정 프로그램 언어(들)에 대해 특별한 타입 시스템(예를 들어, 추상 타입 시스템)의 설명을 매핑할 수 있다. 나아가, 이용 가능한 인터페이스를 결정하고자 하는 프로그래머는 수동 및/또는 프로그램적으로 각 인터페이스의 설명에 액세스할 수 있다. 예를 들어, 운영체제 구성요소(들)(204)를 위해 존재하는 인터페이스와, 인터페이스가 설명되어 있는 타입 시스템, 그리고 그들을 호출하는 방법을 결정하기 위해, 프로그래머는 관련된 메타데이터(208)에 액세스할 수 있다.
아키텍처(200)는 또한 하나 이상의 애플리케이션(들)(210)을 포함한다. 애플리케이션(210)은 HTML, 자바스크립트, 비주얼 베이직, C#, C++, 등과 같은 하나 이상의 프로그램 언어(들)로부터 생성된 하나 이상의 애플리케이션(들)을 포함할 수 있다. 일부 실시예에서, 애플리케이션(210)은 운영체제 구성요소에 대한 하나 이상의 호출(들)을 포함한다. 일부 경우에, 애플리케이션(들)(210)은 우선 어떤 인터페이스(들)가 이용가능한지 프로그램적으로 결정하고, 이어서 결정된 인터페이스(들) 중 하나 이상을 호출하도록 구성될 수 있다. 일부 경우에, 애플리케이션(들)(210)은, 이후에 상세히 설명하는 바와 같이, 하나 이상 생성된 언어 프로젝션 모듈(들)(language projection module)((212)의 도움을 받아 인터페이스(들)에 액세스한다.
하나 이상의 실시예에서, 생성된 언어 프로젝션 모듈(들)(212)은 특정 프로그램 언어로 추상 타입 정의(abstract type definition)를 매핑한다. 임의의 적합한 프로그램 언어가 매핑될 수 있으며, 그 예들은 앞서 제공된다. 일부 실시예에서, 생성된 언어 프로젝션 모듈은 각 프로그램 언어마다 고유할 수 있다. 다른 실시 예에서, 생성된 언어 프로젝션 모듈은 다목적일 수 있고 복수의 프로그램 언어로 사용될 수 있다. 매핑은 추상 타입 시스템을 이용하여 설명하는 현재와 미래의 인터페이스가 추가적인 프로그램 서술(예를 들면, 래퍼 함수(wrapper function))없이 특정 프로그램 언어에 액세스할 수 있도록 한다. 매핑은 또한 특정 프로그램 언어가 그 특정 프로그램 언어에 고유한 방식으로 인터페이스를 호출하도록 한다. 클래스, 데이터 타입, 함수 포인터(function pointer), 구조 등과 같은 임의의 적합한 타입의 정보를 매핑할 수 있다.
인터페이스(들)에 대한 설명은 인터페이스와 관련된 타입 시스템의 동작을 설명하는데 사용될 뿐만 아니라, 애플리케이션이 어떻게 인터페이스를 호출해야 하는지 설명하는데도 사용될 수 있다. 위치를 찾아낸 설명에 응답하여, 애플리케이션은 인터페이스를 호출하고 애플리케이션과 인터페이스간의 타입 시스템 차이를 리졸브하는 방법을 다이내믹하게 결정할 수 있다. 일부 실시예에서, 다른 타입 시스템을 이용하는 애플리케이션은 타입 설명이 있는 곳의 위치에 대한 지식 없이 인터페이스가 이용하는 타입에 프로그램적으로 액세스하고 리졸브할 수 있다. 대안적으로 또는 부가적으로, 설명이 어떻게 그룹화되는지는, 이후에 상세히 설명하는 바와 같이, 자동으로 타입 레졸루션이 가능하게 할 수 있다.
자바스크립트를 사용하여 애플리케이션을 작성하는 프로그래머를 고려한다. 본 예는 자바스크립트를 이용한 구현을 설명하지만, 청구 대상의 사상에서 벗어나지 않는 한 임의의 프로그램 언어를 사용할 수 있다는 것을 이해해야 한다. 외부 기능(external functionality)에 액세스하기 위해, 프로그래머는 기능과 관련된 네임스페이스 및/또는 타입을 식별하도록 구성된 소스 코드에 명령문(statement)을 포함시킬 수 있다. 예를 들어, 다음과 같은 소스 코드에 외부 타입(external type)을 포함 및/또는 설명할 수 있다:
OperatingSystem.Foo.Bar.Type1
본 특정 예에서, Type1은 액세스되는 기능을 나타낸다. 이는 임의의 적절한 유형의 기능일 수 있으며, 이에 대한 예들이 이전과 이후에서 제공된다. 위의 구문(syntax)은 Type1의 위치를 찾기 위해 통과할 수 있는 멀티-레벨 네임스페이스 계층구조(multi-level namespace hierarchy)를 나타낸다. 최상위 레벨에서 Type1은 "OperatingSystem"으로 식별된 네임스페이스에 위치한다. "OperatingSystem" 내에는 "Foo"로 식별된 네임스페이스가 위치한다. 마찬가지로, "Foo" 내에는 "Bar"로 식별된 네임스페이스가 위치하며, 여기에 Type1이 위치한다. 따라서, 구문은 Type1의 논리적 위치(logical location)를 식별하는데 사용될 수 있다. 그러나, Type1의 물리적 위치(physical location)(예를 들면, Type1 정보가 어떤 파일에 있는지 및/또는 그 파일이 어떤 디렉토리에 있는지)는 때때로 변경될 수 있다. 과거에는 (직접 또는 간접적으로) 애플리케이션 내에서 경로와 파일명을 하드 코딩(hard coding)하여 물리적 위치를 결정할 수 있었다. 따라서, Type1 정보의 파일명 및/또는 경로가 변경된다면, 애플리케이션이 이용하는 파일명 및/또는 경로에 대한 임의의 직접 또는 간접 참조는 업데이트될 때까지 올바르지 않았다. 게다가, 직접 또는 간접 참조가 업데이트될 때까지, 애플리케이션은 잠재적으로 제대로 작동하지 않을 수 있었다.
다양한 실시예들은 타입 레졸루션을 추출하는 능력을 제공한다. 예를 들어, 타입은 연관된 타입 레졸루션 정보의 위치에 대한 정확한 지식 없이 애플리케이션에 의해 프로그램적으로 리졸브될 수 있다. 일부 실시예에서, 타입 레졸루션 정보는 그 레졸루션 정보를 이용하는 애플리케이션의 업데이트 없이 새로운 위치 정보를 가지고 재배치될 수 있다. 애플리케이션은 타입 레졸루션 정보가 어느 파일에 있는지 상관없이 타입 레졸루션 정보를 찾아내도록 구성될 수 있다.
하나 이상의 실시예에 따른 방법의 단계를 설명하는 흐름도인 도 3을 고려한다. 본 방법은 임의의 적합한 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합에 의해 수행될 수 있다. 적어도 일부 실시예에서, 본 방법의 양태는 도 1(b)의 타입 레졸루션 모듈(들)(118)과 같은 하나 이상의 컴퓨팅 장치(들) 상에서 실행하는 하나 이상의 적절히 구성된 소프트웨어 모듈(들)에 의해 구현될 있다. 일부 실시예에서, 본 방법은 사용자의 개입 없이 수행될 수 있다.
단계(302)는 리졸브되는 타입과 일치하는 파일명을 가진 파일을 검색하는 것이다. 전술한 바와 같이, 이는 많은 메타데이터 파일을 검색하는 것을 포함할 수 있다. 위의 구문 보기를 참조하면, OperatingSystem.Foo.Bar.Type1에 액세스하는 애플리케이션에 응답하여, 단계(302)는 "OperatingSystem.Foo.Bar.Type1"이라는 이름을 가진 파일을 검색한다. 임의의 적절한 유형의 검색이 수행될 수 있다. 예를 들어, 검색은 타입과 파일명간의 정확한 일치, 타입과 파일명 사이의 부분적 일치 등을 찾도록 구성될 수 있다. 대안적으로 또는 부가적으로, 검색은 하나의 디렉토리, 여러 디렉토리 및/또는 서브디렉토리, 또는 이들의 임의의 조합에서 검색하도록 구성될 수 있다.
단계(304)는 파일이 존재하는지 여부를 결정한다. 파일이 존재한다는 결정에 응답하여, 단계(306)는 해당 타입이 네임스페이스라는 것을 나타내는 정보를 보낸다. 파일이 존재하지 않는다는 결정에 응답하여, 단계(308)는 리졸브되는 타입과 연관된 네임스페이스와 일치하는 파일명을 검색한다. 일부 경우에, 이 단계는 검색할 네임스페이스를 결정하기 위한 네임스페이스 계층구조가 포함된 문자열(string)을 조작하는 것을 포함할 수 있다. 앞선 예에서, Type1은 네임스페이스 계층구조에서 세 단계 아래에 위치하는 것으로 도시된다. 문자열은 해당 타입(예를 들면, Type1)을 제거하여, 네임스페이스 계층구조가 남도록 조작될 수 있다. 여기서, 단계(308)은 네임스페이스 계층구조 "OperatingSystem.Foo.Bar"와 관련된 이름을 검색한다. 상기와 마찬가지로, 이러한 검색은 정확한 일치, 부분적 일치, 한 디렉토리에서의 검색, 서브디렉토리 등을 검색하도록 구성될 수 있다.
단계(310)는 파일명과 관련된 파일이 존재하는지 여부를 결정한다. 파일이 존재한다는 결정에 응답하여, 단계(312)는 해당 타입과 관련된 정보에 대한 파일을 처리한다.
단계(314)는 타입과 관련된 정보가 해당 파일 내에 있는지 여부를 결정한다. 해당 타입과 관련된 정보가 파일 내에 있다는 결정에 응답하여, 단계(316)은 정보를 반환한다. 예를 들어, 정보는 호출 프로그램으로 반환될 수 있다. 그러나, 타입과 관련된 정보가 파일 내에 없다는 결정에 응답하여, 프로세스는 단계(318)로 진행된다.
단계(318)는 상위 레벨(higher-level) 네임스페이스와 일치하는 파일명을 검색한다. 이는, 단계(310)에 대한 응답과 같이 파일이 존재하지 않는다는 결정에 대한 응답이거나, 단계(314)에 대한 응답과 같이 파일 내에 타입과 관련된 정보가 위치하지 않는다는 응답일 수 있다. 상위 레벨 네임스페이스는 임의의 적절한 방식으로 결정될 수 있다. 예를 들어, 앞선 예에서, 문자열은 네임스페이스 계층구조에서 한 단계 위(예를 들면, "OperatingSystem.Foo")를 반영하기 위해 더 조작될 수 있다. 단계(318)는 상위 레벨 네임스페이스를 결정하고 연관된 이름을 가진 파일을 검색한다.
단계(320)는 파일명과 관련된 파일이 존재하는지 여부를 결정한다. 단계(310)의 경우와 같이, 파일이 존재하는 것으로 판정되면, 프로세스는 단계(312)과 단계(314) 및/또는 단계(316)로 진행하고, 파일은 관련된 타입 정보에 대해 처리된다.
파일이 존재하지 않는다는 결정에 응답하여, 단계(322)는 다른 네임스페이스 계층구조 레벨이 존재하는지 여부를 결정한다. 이것은 임의의 적절한 방식으로 결정될 수 있다. 예를 들어, 문자열은 레벨 분리기(level separator)에 대해 검색될 수 있다. 앞선 예에서, "."의 구문은 네임스페이스 계층구조의 레벨을 구분한다.
다른 네임스페이스 계층구조 레벨이 존재한다는 결정에 응답하여, 프로세스를 반복하고, 프로세스는 새롭게 결정된 네임스페이스를 가진 파일을 검색하기 위해 단계(318)로 되돌아간다. 적절한 파일이 발견되거나 네임스페이스 계층구조의 상단에 도달하여 검색될 때까지 단계(318)와 단계(320), 그리고 단계(322)를 반복한다. 다른 네임스페이스 계층구조 레벨이 존재하지 않는다는 결정에 응답하여, 단계(324)는 에러를 반환한다. 이는 예외를 내보이고 팝업 대화 상자를 표시하는 것 등을 포함할 수 있다.
상술한 방법을 사용함으로써, 타입 레졸루션 정보를 위해 복수의 파일 및/또는 위치를 검색할 수 있다. 도시된 바와 같이, 타입 검색은 적어도 부분적으로 계층적 네임스페이스 정보에 근거할 수 있다. 도 3은 하위 네임스페이스 계층구조 레벨(예를 들면, "OperatingSystem.Foo.Bar.Type1")에서 시작하여 그 타입이 위치하거나 상단 네임스페이스 계층구조 레벨(예를 들면, "OperatingSystem")에 도달할 때까지 각 네임스페이스 레벨을 위로 횡단하는 타입 검색을 도시한다. 그러나, 이 검색은 임의의 적절한 순서로 실행할 수 있다. 일부 실시예에서, 타입 검색은 상위 네임스페이스 계층구조 레벨(예를 들면, "OperatingSystem")에서 시작하여 그 타입이 위치하거나 하단 네임스페이스 계층구조 레벨(예를 들면, "OperatingSystem.Foo.Bar.Type1")에 도달할 때까지 각 네임스페이스 레벨을 아래로 횡단할 수 있다. 네임스페이스 계층구조에 대한 검색은 타입 레졸루션 정보가 있는 위치를 추출할 수 있으며, 나아가 타입 레졸루션 정보가 타입 레졸루션 정보에 액세스하는 애플리케이션에 대한 영향 없이 위치를 변경하도록 할 수 있다.
위치 파일명 및/또는 위치와 독립적으로 타입 레졸루션을 하도록 구성된 타입 레졸루션 아키텍처를 고려하였고, 이제 하나 이상의 실시예에 따라 유연성 있는 타입 설명 저장에 대해 논의한다.
타입 설명 저장
메타데이터 파일은 다양한 양태의 소프트웨어 인터페이스를 설명하는데 사용될 수 있다. 전술한 바와 같이, 메타데이터 파일은 클래스 계층구조, 추상 타입 시스템, 관련 방법, 특성 및 이벤트 등의 측면에서 인터페이스를 설명하는 정보를 포함할 수 있다. 일부 경우에, 관련된 정보는 복수의 파일에 있을 수 있다. 예를 들어, 서로 다른 메타데이터 파일은 동일한 네임스페이스에 관한 정보를 포함할 수 있다. 복수의 메타데이터 파일은 메타데이터 파일의 개발자에게 유연성을 제공할 수 있지만, 검색할 때는 종종 메타데이터 파일의 사용자를 방해할 수 있다. 각 네임스페이스가 자신만이 연관된 메타데이터 파일을 갖는 예를 고려한다. 분할의 관점(partitioning standpoint)에서, 각 네임스페이스에 대한 개별 파일은 네임스페이스에 대한 변경 사항을 연관된 파일로 분리시킬 수 있다. 그러나, 검색의 관점(searching standpoint)에서, 복수의 파일에 걸쳐 정보를 검색해야 하는 것은 런타임시 검색할 때 성능을 감속시킬 수 있다. 게다가, 인지의 관점(knowledge standpoint)에서, 어떤 정보가 어떤 파일에 있는지를 파악하는 것은 파일의 수가 증가함에 따라 복잡해질 수 있다.
다양한 실시예는 파일명과 타입 레졸루션 정보가 있는 곳의 파일 위치에 대한 사전 지식 없이 타입 레졸루션을 가능하게 한다. 일련의 입력 파일의 콘텐츠는 적어도 부분적으로 조합 규칙(composition rule)에 근거하여 분석되고 분할될 수 있다. 일련의 출력 파일이 생성될 수 있으며, 분할된 콘텐츠를 포함하도록 구성된다. 출력 파일은 콘텐츠가 있는 위치에 대한 사전 지식 없이 콘텐츠의 위치를 설정하도록 할 수 있다.
일례로, 하나 이상의 실시예에 따른 서술형 언어 파일(descriptive language file)과 메타데이터 파일 및 병합 모듈 사이의 관계를 도시한 도 4를 고려한다. 적어도 일부 실시예에서, 관계도(relationship diagram)에 도시된 모듈은 도 1(a)의 병합 모듈(들)(116)과 같이, 소프트웨어, 하드웨어, 또는 이들의 임의의 조합으로서 구현될 수 있다.
도시되고 설명된 실시예에서, Foo.idl(402)은 하나 이상의 인터페이스(들)를 설명하기 위해 구성된 서술형 언어 파일을 나타낸다. 일부 실시예에서, 인터페이스는 도 1의 운영체제 인터페이스(들)(108) 및/또는 애플리케이션(들)(110)과 같은 운영체제 및/또는 애플리케이션과 관련될 수 있다. 기술 언어 파일(description language file)은 인터페이스 정의 언어(Interface Definition Language: IDL), 확장성 생성 언어(eXtensible Markup Language: XML) 등과 같은 임의의 적절한 설명, 마크업 언어(markup language), 및/또는 구문을 이용하여 인터페이스를 설명할 수 있다. 본 특정 예에서, Foo.idl은 IDL 파일을 대표한다.
Foo.idl(402)은 Type Foo.Bar.Type1(404)과 Type Foo.Bar.Type2(406) 및 Type Foo.Bar.Type3(408)의 세 가지 타입에 대한 설명을 포함한다. 세 가지 항목으로 도시하지만, 설명의 유형뿐만 아니라 임의의 적절한 설명의 개수는, 청구 대상의 사상을 벗어나지 않는 한 Foo.idl(402)에 포함될 수 있다는 것을 이해해야 할 것이다. 예를 들면, 타입은 클래스, 인터페이스, 방법, 속성, 이벤트 등의 설명을 포함할 수 있다. 본 예에서, 타입(404, 406, 408)은 "Foo.Bar"라는 계층적 네임스페이스에 포함되는 것으로 설명된다.
도 4는 또한 두 번째 기술 언어 파일인 Bar.idl(410)을 도시한다. Foo.idl(402)와 유사하게, Bar.idl(410)은 Type Foo.Bar.Type4(412)와 Type Foo.Quux.Type1(414) 및 Type Foo.Quux.Type2(416)의 세 가지 타입을 포함하는 기술 언어 파일을 나타낸다. 타입(412, 414, 416)의 구문을 참조하면, Bar.idl(410)은 "Foo.Bar"라는 네임스페이스에 적어도 하나의 타입을 포함하고, "Foo.Quux"라는 네임스페이스에 적어도 두 가지 타입을 포함한다.
Foo.metadata(418)는 적어도 부분적으로 Foo.idl(402)에 근거한 기계 판독 가능한 메타데이터 파일을 나타낸다. 도시하지는 않았지만, 일부 실시예에서, Foo.metadata(418)는 Foo.idl(402)로부터의 컴파일러에 의해 생성될 수 있다. Foo.idl(402)와 유사하게, Foo.metadata(418)는, Foo.Bar.Type1(420)과 Foo.Bar.Type2(422) 및 Foo.Bar.Type3(424) 타입의 설명을 메타데이터 파일에 고유한 방식으로 포함한다. Bar.metadata(426)는 또한 적어도 부분적으로 Bar.idl(410)에 근거한 기계 판독 가능한 메타데이터 파일을 나타낸다. Foo.metadata(418)의 경우에서와 같이, Bar.metadata(426)는 타입 설명 Foo.Bar.Type4(428)와 Foo.Quux.Type1(430) 및 Foo.Quux.Type3(432)을 포함한다.
병합 모듈(434)이 도 4에 포함된다. 병합 모듈(434)은 하나 이상의 입력 파일(들)을 받아들이고, 결과적으로 일련의 기준(criteria) 및/또는 규칙(rule)에 근거하여 하나 이상의 출력 파일(들)을 생성한다. 예를 들어, 입력 명령 및/또는 규칙은, 입력 파일을 검색할 입력 디렉토리와, 출력 파일을 배치할 출력 디렉토리, 적용할 검증 수준, 통합 및/또는 분배할 네임스페이스 계층구조의 레벨, 출력 파일의 명명 방법, 생성할 출력 파일의 개수, 메타데이터 파일이 생성되어야 하는 깊이, 등을 지정하는 병합 모듈(434)에 적용될 수 있다. 기준 및/또는 규칙은 하나 이상의 규칙(들)을 포함하는 명령 라인(command line) 및/또는 "생성파일(makefile)"을 거친 것과 같은 임의의 적절한 방식으로 병합 모듈(434)에 주어질 수 있다.
본 예에서, Foo.metadata(418)와 Bar.metadata(426)는 병합 모듈(434)에 대한 입력이다. 병합 모듈(434)은 입력 파일을 구문 분석하고 지시된 대로 출력 파일(들)을 생성한다. 여기서, 병합 모듈(434)은 Foo.Bar.metadata(436)와 Foo.Quux.metadata(438)의 두 가지 출력 파일을 생성한다. Foo.Bar.metadata(436)는 "Foo.Bar" 네임스페이스(예를 들면, Foo.Bar.Type1(440), Foo.Bar.Type2(442), Foo.Bar.Type3(444), 및 Foo.Bar.Type4(446))에 관한 타입을 포함한다. 마찬가지로, Foo.Quux.metadata(438)는 "Foo.Quux" 네임스페이스(예를 들면, Foo.Quux.Type1(448), Foo.Quux.Type2(450))에 관한 타입을 포함한다. 상술한 경우에서와 같이, Foo.Bar.metadata(436) 및 Foo.Quux.metadata(438)는 관련된 입력 파일로부터 재구성 및/또는 재그룹화된 데이터를 잠정적으로 포함하는 기계 판독 가능한 메타데이터 파일을 나타낸다. 따라서, 병합 모듈(434)은 일련의 기준에 따라 복수의 파일로부터 콘텐츠를 분석하고 해당 콘텐츠를 재구성할 수 있다.
일부 실시예에서, 파일 명명 규칙(file naming convention)은 추상 타입 레졸루션을 가능하게 하는 데에 이용될 수 있다. 예를 들어, 네임스페이스 계층구조를 명명 규칙으로 사용할 수 있다. 도 4에서, 파일 Foo.Bar.metadata(436)와 Foo.Quux.metadata(438)는 그들의 파일명에서 관련된 네임스페이스 계층구조(예를 들면, 각각 "Foo.Bar"와 "Foo.Quux")를 포함한다. 이러한 명명 규칙을 이용하여 타입 정보는 특정 파일명 보다는 관련된 네임스페이스를 기반으로 검색될 수 있다. 대안적으로 또는 부가적으로, 출력 파일은 여러 레벨의 네임스페이스 계층구조 데이터를 포함할 수 있다. 도 4에서, Foo.Bar.metadata(436)는 "Foo.Bar" 네임스페이스에 있는 데이터를 포함하는 것으로 설명된다. 그러나, Foo.Bar.metadata(436)는 또한 "Foo.Bar.Level1.Level2.Level3"의 네임스페이스 계층구조 레벨에 있는 타입 정보를 포함하도록 구성될 수 있다. 따라서, 명명 규칙은 파일 내에 포함될 수 있는 최고 레벨의 네임스페이스를 나타낸다.
또한, 도 3에서 설명한 것과 같은 검색 알고리즘(search algorithm)은 적절한 타입을 찾을 때까지 다른 레벨의 계층적 네임스페이스(및 관련 파일)를 거치도록 이용될 수 있다. 같은 네임스페이스 계층구조 레벨에 있는 모든 타입 정보를 동일한 파일에 위치하도록 구성함으로써, 특정 레벨과 관련된 정보는 해당 정보를 이용하는 애플리케이션에 영향을 주지 않고 파일간에 이동될 수 있다. 네임스페이스 계층구조와 관련된 정보는 임의의 적절한 방법으로 분할될 수 있다. 예를 들어, 복수의 계층구조 레벨은 같은 파일 내에 있을 수 있고(예를 들면, "Foo.Bar.metadata"로 명명된 파일 내에 Foo.Bar와, Foo.Bar.Level1, 및 Foo.Bar.Level2가 모두 있다), 또는 각 파일은 자신만이 관련된 파일을 가질 수 있다(예를 들면, Foo.Bar 레벨에서의 정보는 "Foo.Bar.metadata" 파일에 위치하고, Foo.Bar.Level1 에서의 정보는 "Foo.Bar.Level1.metadata" 파일 등에 위치한다). 정보가 관련된 네임스페이스의 계층구조에 따라 배치된다면, 타입 레졸루션은 특정 파일명에 대한 종속성을 제거하여 추출될 수 있다.
이제 하나 이상의 실시예에 따른 방법의 단계를 설명하는 흐름도를 도시하는 도 5를 고려한다. 본 방법은 임의의 적합한 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합에 의해 수행될 수 있다. 적어도 일부 실시예에서, 본 방법의 양태는 도 1(a)의 병합 모듈(들)(116)과 같은 하나 이상의 컴퓨팅 장치(들) 상에서 수행하는 하나 이상의 적절히 구성된 소프트웨어 모듈(들)에 의해 실행될 수 있다.
단계(502)는 하나 이상의 출력 파일(들)을 생성하는 것과 연관된 하나 이상의 입력 기준을 수신한다. 일부 실시예에서, 상기 입력 기준은 정보를 하나 이상의 출력 파일로 분할하는 방법을 지정하는 규칙(들)을 포함할 수 있다. 예를 들어, 입력 기준은 하나 이상의 네임스페이스 계층구조 레벨을 출력 파일 내에 함께 그룹화하도록 지정할 수 있다. 대안적으로 또는 부가적으로, 입력 기준은 정보를 끌어내기 위한 파일 및/또는 디렉토리를 지정하는 것과 같이 정보를 찾아야 하는 위치를 설명할 수 있다.
하나 이상의 입력 기준을 수신하는 것에 응답하여, 단계(504)는 하나 이상의 소프트웨어 인터페이스와 관련된 정보를 포함하는 하나 이상의 입력 파일(들)을 수신한다. 그 정보는 추상 타입 시스템, 객체 지향 연관성, 방법, 특성, 함수 포인터, 입력 및/또는 출력 매개변수, 타입 시스템 정보 등을 이용하는 소프트웨어 인터페이스의 설명과 같은 임의의 적합한 유형의 정보일 수 있다. 일부 실시예에서, 타입 정보는 네임스페이스 계층구조 정보를 포함할 수 있다.
하나 이상의 입력 파일(들)의 수신에 응답하여, 단계(506)은 적어도 부분적으로 하나 이상의 입력 기준에 근거하여 정보를 분석한다. 이는 각 파일 내에 어떤 네임스페이스 계층구조 타입 정보가 존재하는지를 결정하기 위해 입력 파일(들)을 분석하는 것을 포함할 수 있다.
정보 분석에 응답하여, 단계(508)은 해당 정보를 포함하는 적어도 하나의 출력 파일을 생성한다. 일부 실시예에서, 출력 파일은 적어도 부분적으로 입력 기준에 근거하여 상이한 파일로 재분할된 정보를 포함할 수 있다. 출력 파일은 임의의 적합한 방식으로 구성될 수 있으며, 그 예는 앞서 제공된다. 예를 들어, 출력 파일(들)은 메타데이터 파일에 포함된 네임스페이스 계층구조에 근거하여 명명 규칙을 가지고 명명된 메타데이터 파일로서 구성될 수 있다. 대안적으로 또는 부가적으로, 출력 파일(들)은 네임스페이스 계층구조의 여러 레벨을 포함하도록 구성될 수 있다. 네임스페이스 계층구조 정보를 출력 파일로 함께 그룹화하여, 애플리케이션은 특정 파일명보다는 네임스페이스 계층구조의 레벨에 근거하여 정보를 검색할 수 있다. 이는 애플리케이션에 영향을 주지 않고 정보의 유연한 분할을 가능하게 한다. 애플리케이션이 어느 네임스페이스 계층구조의 레벨에 특별한 타입이 있는지 아는 한, 관련된 타입 정보는, 네임스페이스 계층구조의 레벨이 어떻게 그룹화되는지와 상관없이, 출력 파일에서 확인될 수 있다.
유연성 있는 타입 설명 저장을 고려하였고, 이제 하나 이상의 실시예에 따른 예시적인 시스템을 논의한다.
예시적 시스템
도 6은 상술한 다양한 실시예를 구현하는데 사용될 수 있는 예시적인 컴퓨팅 장치(600)를 도시한다. 예를 들어, 컴퓨팅 장치(600)는 도 1(a)와 1(b)의 컴퓨팅 장치(102a) 및/또는 컴퓨팅 장치(102b)이거나 또는 임의의 다른 적합한 컴퓨팅 장치일 수 있다.
컴퓨팅 장치(600)는 하나 이상의 프로세서(들) 또는 프로세싱 유닛(들)(602)과, 하나 이상의 메모리 및/또는 저장소 컴포넌트(들)(604), 하나 이상의 입력/출력(I/O) 장치(606), 그리고 다양한 구성요소 및 장치가 서로 통신할 수 있게 하는 버스(bus, 608)를 포함한다. 버스(608)는 메모리 버스 또는 메모리 제어기(memory controller), 주변장치 버스(peripheral bus), 가속 그래픽 포트, 및 임의의 다양한 버스 아키텍처를 사용하는 프로세서 또는 로컬 버스를 포함하는 여러 유형의 버스 구조 중 임의의 하나 이상을 나타낸다. 버스(608)는 유선 및/또는 무선 버스를 포함할 수 있다.
메모리/저장소 컴포넌트(memory/storage component)(604)는 하나 이상의 컴퓨터 하드웨어 저장 매체를 나타낸다. 컴포넌트(604)는 (랜덤 액세스 메모리(random access memory: RAM)와 같은) 휘발성 매체 및/또는 (판독 전용 메모리(read only memory: ROM), 플래시 메모리, 광 디스크, 자기 디스크 등과 같은) 비휘발성 매체를 포함할 수 있다. 컴포넌트(604)는 이동식 매체(예를 들면, 플래시 메모리 드라이브, 이동식 하드 드라이브, 광 디스크, 등)뿐만 아니라 고정 매체(예를 들면, RAM, ROM, 고정 하드 드라이브 등)를 포함할 수 있다.
하나 이상의 입력/출력 장치(들)(606)는 사용자가 명령 및 정보를 컴퓨팅 장치(600)에 입력하도록 하고, 또한 정보가 사용자 및/또는 다른 구성요소 또는 장치에 표시될 수 있도록 한다. 입력 장치의 예로는 키보드, 커서 제어 장치(예를 들면, 마우스), 마이크로폰, 스캐너 등을 포함한다. 출력 장치의 예로는 디스플레이 장치(예를 들면, 모니터나 프로젝터), 스피커, 프린터, 네트워크 카드 등을 포함한다.
다양한 기술이 소프트웨어 또는 프로그램 모듈의 일반적인 문맥으로 본 명세서에서 설명될 수 있다. 일반적으로, 소프트웨어는 특정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하는 루틴(routine), 프로그램, 오브젝트(object), 구성요소, 데이터 구조 등을 포함한다. 이러한 모듈과 기술의 구현은 컴퓨터 판독 가능한 매체의 일부 형태를 통해 저장되거나 전송될 수 있다. 컴퓨터 판독 가능한 매체는 컴퓨팅 장치에 의해 액세스될 수 있는 임의의 이용 가능한 매체 또는 매체들일 수 있다. 비제한적인 예로서, 컴퓨터 판독 가능한 매체는 "컴퓨터 판독 가능한 저장 매체(computer-readable storage media)"를 포함할 수 있다.
"컴퓨터 판독 가능한 저장 매체"는 컴퓨터 판독 가능한 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식(removable) 및 비이동식(non-removable) 하드웨어 매체를 포함한다. 컴퓨터 판독 가능한 하드웨어 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크 (digital versatile disk: DVD) 또는 다른 광학 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하는데 사용되고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함하며, 이에 한정되지 않는다.
결론
다양한 실시예들은 복수의 타입 시스템간의 타입 레졸루션을 추출하는 능력을 제공한다. 적어도 하나의 타입은 하나 이상의 프로그램적으로 액세스 가능한 파일(들)에서 설명될 수 있다. 일부 실시예에서, 다른 타입 시스템을 이용하는 애플리케이션은 타입 설명이 있는 곳의 위치에 대한 지식 없이 적어도 하나의 타입 시스템의 유형에 프로그램적으로 액세스하고 적어도 하나의 타입 시스템의 타입을 리졸브할 수 있다. 대안적으로 또는 추가적으로, 하나 이상의 프로그램적으로 액세스 가능한 파일(들)에 포함된 타입 설명은 적어도 부분적으로 타입 설명에 근거하여 하나 이상의 새로운 프로그램적으로 액세스 가능한 파일(들)로 분석되고 재구성될 수 있다.
본 발명의 청구대상이 구조적 특징 및/또는 방법론적 작용에 특정된 언어로 설명되었을지라도, 첨부된 특허청구범위에 정의된 청구대상은 상술한 특정 특징 또는 작용에 반드시 한정되는 것은 아니라는 것을 이해해야 한다. 오히려, 상술한 특정 특징 및 작용은 특허청구범위를 구현하는 예시적인 형태로서 개시된다.

Claims (40)

  1. 하나 이상의 출력 파일을 생성하는 것과 연관된 하나 이상의 입력 기준을 수신하는 단계- 적어도 하나의 입력 기준은 네임스페이스 계층구조와 연관됨 -와,
    상기 네임스페이스 계층구조 내에 포함된 적어도 하나의 타입과 연관된 정보를 포함하는 하나 이상의 입력 메타데이터 파일을 수신하는 단계- 상기 적어도 하나의 타입과 연관된 정보는 추상 타입 시스템(abstract type system)을 이용하여 설명된 타입 레졸루션(type resolution) 정보를 포함함 -와,
    상기 하나 이상의 입력 메타데이터 파일을 수신한 것에 응답하여, 상기 하나 이상의 입력 기준에 적어도 부분적으로 기초하여 상기 적어도 하나의 타입과 연관된 정보를 재구성하는 단계와,
    상기 적어도 하나의 타입과 연관된 상기 재구성된 정보를 포함하도록 구성된 적어도 하나의 출력 메타데이터 파일을 생성하는 단계
    를 포함하는 컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 출력 메타데이터 파일은 상기 네임스페이스 계층구조에 적어도 부분적으로 기초하는 명명 규칙(naming convention)을 사용하는
    컴퓨터 구현 방법.
  3. 제 1 항에 있어서,
    상기 네임스페이스 계층구조와 연관된 적어도 하나의 입력 기준은 상기 정보를 상기 하나 이상의 출력 파일로 분할하는 네임스페이스 계층구조의 레벨을 지정하는 기준을 포함하는
    컴퓨터 구현 방법.
  4. 제 1 항에 있어서,
    상기 적어도 하나의 타입은 객체 지향 클래스를 포함하는
    컴퓨터 구현 방법.
  5. 제 1 항에 있어서,
    네임스페이스 계층구조 정보를 위해 상기 적어도 하나의 타입과 연관된 정보를 분석하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  6. 제 1 항에 있어서,
    상기 적어도 하나의 출력 메타데이터 파일을 검색하기 위한 요청을 수신하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  7. 제 6 항에 있어서,
    상기 적어도 하나의 출력 메타데이터 파일을 검색하기 위한 상기 수신된 요청은 네임스페이스 계층구조 레벨을 지정하는
    컴퓨터 구현 방법.
  8. 제 1 항에 있어서,
    상기 적어도 하나의 타입과 연관된 정보는 객체 지향 연관을 포함하는
    컴퓨터 구현 방법.
  9. 제 1 항에 있어서,
    상기 추상 타입 시스템은 특정 프로그래밍 언어에 독립적인 타입 시스템인
    컴퓨터 구현 방법.
  10. 실행되는 경우, 동작들을 구현하는 컴퓨터 판독 가능한 명령어를 포함하는 하나 이상의 컴퓨터 판독 가능한 하드웨어 저장 메모리로서,
    상기 동작들은
    하나 이상의 출력 파일을 생성하는 것과 연관된 하나 이상의 입력 기준을 수신하는 동작- 적어도 하나의 입력 기준은 네임스페이스 계층구조를 지정함 -과,
    상기 네임스페이스 계층구조 내에 포함된 적어도 하나의 타입과 연관된 정보를 포함하는 하나 이상의 입력 파일을 수신하는 동작- 상기 적어도 하나의 타입은 운영 체제에 의해 제공되는 기능을 나타내고, 상기 적어도 하나의 타입과 연관된 정보는 추상 타입 시스템을 이용하여 설명된 타입 레졸루션 정보를 포함함 -과,
    상기 하나 이상의 입력 기준에 적어도 부분적으로 기초하여 재구성된 상기 적어도 하나의 타입과 연관된 정보를 포함하도록 구성된 적어도 하나의 출력 메타데이터 파일을 생성하는 동작을 포함하는
    컴퓨터 판독 가능한 하드웨어 저장 메모리.
  11. 제 10 항에 있어서,
    상기 적어도 하나의 출력 메타데이터 파일은 상기 네임스페이스 계층구조에 적어도 부분적으로 기초하는 명명 규칙을 사용하는
    컴퓨터 판독 가능한 하드웨어 저장 메모리.
  12. 제 10 항에 있어서,
    상기 적어도 하나의 출력 메타데이터 파일은 운영 체제 소프트웨어 인터페이스와 연관된 설명을 포함하는
    컴퓨터 판독 가능한 하드웨어 저장 메모리.
  13. 제 10 항에 있어서,
    상기 네임스페이스 계층구조를 지정하는 적어도 하나의 입력 기준은 상기 정보를 상기 하나 이상의 출력 파일로 분할하는 네임스페이스 계층구조의 레벨을 지정하는 기준을 포함하는
    컴퓨터 판독 가능한 하드웨어 저장 메모리.
  14. 제 10 항에 있어서,
    상기 적어도 하나의 타입은 객체 지향 클래스를 포함하는
    컴퓨터 판독 가능한 하드웨어 저장 메모리.
  15. 제 10 항에 있어서,
    상기 동작들은 네임스페이스 계층구조 정보를 위해 상기 적어도 하나의 타입과 연관된 정보를 분석하는 동작을 더 포함하는
    컴퓨터 판독 가능한 하드웨어 저장 메모리.
  16. 시스템으로서,
    하나 이상의 프로세서와,
    상기 하나 이상의 프로세서에 통신가능하게 연결되고, 명령어를 저장하는 메모리를 포함하되,
    상기 명령어는 실행되는 경우 상기 하나 이상의 프로세서로 하여금
    하나 이상의 출력 파일을 생성하는 것과 연관된 하나 이상의 입력 기준을 수신하고- 적어도 하나의 입력 기준은 네임스페이스 계층구조의 제 1 레벨과 연관됨 -,
    상기 네임스페이스 계층구조 내에 포함된 적어도 하나의 타입과 연관된 정보를 포함하는 하나 이상의 입력 메타데이터 파일을 수신하며- 상기 적어도 하나의 타입과 연관된 정보는 추상 타입 시스템을 이용하여 설명된 타입 레졸루션 정보를 포함함 -,
    상기 하나 이상의 입력 기준에 적어도 부분적으로 기초하여 재그룹화된 상기 적어도 하나의 타입과 연관된 정보를 포함하도록 구성된 하나 이상의 출력 메타데이터 파일을 생성하게 하되, 상기 재그룹화된 정보는 상기 네임스페이스 계층구조의 상기 제 1 레벨 및 상기 네임스페이스 계층구조의 제 2 레벨을 포함하는
    시스템.
  17. 제 16 항에 있어서,
    상기 하나 이상의 출력 메타데이터 파일은 특정 프로그래밍 언어에 독립적으로 상기 적어도 하나의 타입을 설명하도록 구성된
    시스템.
  18. 제 16 항에 있어서,
    상기 하나 이상의 프로세서는 상기 적어도 하나의 타입의 네임스페이스에 일치하는 파일명을 갖는 파일을 위해 상기 하나 이상의 출력 메타데이터 파일을 검색하도록 더 구성된
    시스템.
  19. 제 16 항에 있어서,
    상기 하나 이상의 프로세서는 상기 적어도 하나의 타입이 상주하는 위치에 대한 지식없이 상기 하나 이상의 출력 메타데이터 파일을 검색하도록 더 구성된
    시스템.
  20. 제 16 항에 있어서,
    상기 하나 이상의 프로세서는 상기 하나 이상의 출력 메타데이터 파일에 대한 액세스를 통해 또 다른 타입 시스템을 리졸브(resolve)하도록 더 구성된
    시스템.
  21. 하나 이상의 출력 파일을 생성하는 것과 연관된 하나 이상의 입력 기준을 수신하는 단계- 적어도 하나의 입력 기준은 네임스페이스 계층구조와 연관됨 -와,
    상기 네임스페이스 계층구조 내에 포함된 적어도 하나의 타입과 연관된 정보를 포함하는 하나 이상의 입력 메타데이터 파일을 수신하는 단계- 상기 네임스페이스 계층구조와 연관된 상기 적어도 하나의 입력 기준은 상기 정보를 상기 하나 이상의 출력 파일로 분할하는 네임스페이스 계층구조의 레벨을 지정하는 기준을 포함함 -와,
    상기 하나 이상의 입력 메타데이터 파일을 수신한 것에 응답하여, 상기 하나 이상의 입력 기준에 적어도 부분적으로 기초하여 상기 적어도 하나의 타입과 연관된 정보를 재구성하는 단계와,
    상기 적어도 하나의 타입과 연관된 상기 재구성된 정보를 포함하도록 구성된 적어도 하나의 출력 메타데이터 파일을 생성하는 단계
    를 포함하는 컴퓨터 구현 방법.
  22. 제 21 항에 있어서,
    상기 적어도 하나의 출력 메타데이터 파일은 상기 네임스페이스 계층구조에 적어도 부분적으로 기초하는 명명 규칙을 사용하는
    컴퓨터 구현 방법.
  23. 제 21 항에 있어서,
    상기 적어도 하나의 출력 메타데이터 파일은 상기 네임스페이스 계층구조의 다수의 레벨을 포함하는
    컴퓨터 구현 방법.
  24. 제 21 항에 있어서,
    상기 적어도 하나의 타입은 객체 지향 클래스를 포함하는
    컴퓨터 구현 방법.
  25. 제 21 항에 있어서,
    네임스페이스 계층구조 정보를 위해 상기 적어도 하나의 타입과 연관된 정보를 분석하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  26. 제 21 항에 있어서,
    상기 적어도 하나의 출력 메타데이터 파일을 검색하기 위한 요청을 수신하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  27. 제 26 항에 있어서,
    상기 적어도 하나의 출력 메타데이터 파일을 검색하기 위한 상기 수신된 요청은 네임스페이스 계층구조 레벨을 지정하는
    컴퓨터 구현 방법.
  28. 제 21 항에 있어서,
    상기 적어도 하나의 타입과 연관된 정보는 객체 지향 연관을 포함하는
    컴퓨터 구현 방법.
  29. 제 21 항에 있어서,
    상기 네임스페이스 계층구조의 레벨을 사용하여 상기 적어도 하나의 출력 메타데이터 파일 내에서 연관된 타입 정보를 찾아내는 단계를 더 포함하는
    컴퓨터 구현 방법.
  30. 실행되는 경우, 동작들을 구현하는 컴퓨터 판독 가능한 명령어를 포함하는 하나 이상의 컴퓨터 판독 가능한 하드웨어 저장 메모리로서,
    상기 동작들은
    하나 이상의 출력 파일을 생성하는 것과 연관된 하나 이상의 입력 기준을 수신하는 동작- 적어도 하나의 입력 기준은 네임스페이스 계층구조를 지정함 -과,
    상기 네임스페이스 계층구조 내에 포함된 적어도 하나의 타입과 연관된 정보를 포함하는 하나 이상의 입력 메타데이터 파일을 수신하는 동작- 상기 적어도 하나의 입력 기준은 상기 정보를 상기 하나 이상의 출력 파일로 분할하는 네임스페이스 계층구조의 레벨을 지정하는 기준을 포함함 -과,
    상기 하나 이상의 입력 메타데이터 파일을 수신한 것에 응답하여, 상기 하나 이상의 입력 기준에 적어도 부분적으로 기초하여 상기 적어도 하나의 타입과 연관된 정보를 재구성하는 동작과,
    상기 적어도 하나의 타입과 연관된 상기 재구성된 정보를 포함하도록 구성된 적어도 하나의 출력 메타데이터 파일을 생성하는 동작을 포함하는
    컴퓨터 판독 가능한 하드웨어 저장 메모리.
  31. 제 30 항에 있어서,
    상기 적어도 하나의 출력 메타데이터 파일은 상기 네임스페이스 계층구조에 적어도 부분적으로 기초하는 명명 규칙을 사용하는
    컴퓨터 판독 가능한 하드웨어 저장 메모리.
  32. 제 30 항에 있어서,
    상기 적어도 하나의 출력 메타데이터 파일은 운영 체제 소프트웨어 인터페이스와 연관된 설명을 포함하는
    컴퓨터 판독 가능한 하드웨어 저장 메모리.
  33. 제 30 항에 있어서,
    상기 적어도 하나의 타입은 객체 지향 클래스를 포함하는
    컴퓨터 판독 가능한 하드웨어 저장 메모리.
  34. 제 30 항에 있어서,
    상기 동작들은 네임스페이스 계층구조 정보를 위해 상기 적어도 하나의 타입과 연관된 정보를 분석하는 동작을 더 포함하는
    컴퓨터 판독 가능한 하드웨어 저장 메모리.
  35. 시스템으로서,
    하나 이상의 프로세서와,
    상기 하나 이상의 프로세서에 통신가능하게 연결되고, 명령어를 저장하는 메모리를 포함하되,
    상기 명령어는 실행되는 경우 상기 하나 이상의 프로세서로 하여금
    하나 이상의 출력 파일을 생성하는 것과 연관된 하나 이상의 입력 기준을 수신하고- 적어도 하나의 입력 기준은 네임스페이스 계층구조와 연관되고, 상기 네임스페이스 계층구조와 연관된 상기 적어도 하나의 입력 기준은 적어도 하나의 타입과 연관된 정보를 상기 하나 이상의 출력 파일로 분할하는 네임스페이스 계층구조의 레벨을 지정하는 기준을 포함함 -,
    상기 네임스페이스 계층구조 내에 포함된 상기 적어도 하나의 타입과 연관된 정보를 포함하는 하나 이상의 입력 메타데이터 파일을 수신하고,
    상기 하나 이상의 입력 메타데이터 파일을 수신한 것에 응답하여, 상기 하나 이상의 입력 기준에 적어도 부분적으로 기초하여 상기 적어도 하나의 타입과 연관된 정보를 재구성하며,
    상기 적어도 하나의 타입과 연관된 상기 재구성된 정보를 포함하도록 구성된 적어도 하나의 출력 메타데이터 파일을 생성하게 하는
    시스템.
  36. 제 35 항에 있어서,
    상기 하나 이상의 출력 메타데이터 파일은 특정 프로그래밍 언어에 독립적으로 상기 적어도 하나의 타입을 설명하도록 구성된
    시스템.
  37. 제 35 항에 있어서,
    타입 시스템과 연관된 상기 적어도 하나의 타입은 운영 체제와 연관된 애플리케이션 프로그래밍 인터페이스(API)를 포함하는
    시스템.
  38. 제 35 항에 있어서,
    상기 하나 이상의 프로세서는 타입 시스템과 연관된 타입의 네임스페이스에 일치하는 파일명을 갖는 파일을 위해 상기 하나 이상의 메타데이터 파일을 검색하도록 더 구성된
    시스템.
  39. 제 35 항에 있어서,
    상기 하나 이상의 프로세서는 상기 타입이 상주하는 위치에 대한 지식없이 상기 하나 이상의 메타데이터 파일을 검색하도록 더 구성된
    시스템.
  40. 제 35 항에 있어서,
    상기 하나 이상의 출력 메타데이터 파일은 소프트웨어 인터페이스와 연관된 설명을 포함하는
    시스템.
KR1020177032448A 2011-09-10 2011-10-08 유연성을 갖춘 메타데이터 구성 기법 KR101924747B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/229,697 US8433697B2 (en) 2011-09-10 2011-09-10 Flexible metadata composition
US13/229,697 2011-09-10
PCT/US2011/055491 WO2013036248A1 (en) 2011-09-10 2011-10-08 Flexible metadata composition

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020147006175A Division KR101798705B1 (ko) 2011-09-10 2011-10-08 유연성을 갖춘 메타데이터 구성 기법

Publications (2)

Publication Number Publication Date
KR20170127060A KR20170127060A (ko) 2017-11-20
KR101924747B1 true KR101924747B1 (ko) 2018-12-03

Family

ID=47830769

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177032448A KR101924747B1 (ko) 2011-09-10 2011-10-08 유연성을 갖춘 메타데이터 구성 기법
KR1020147006175A KR101798705B1 (ko) 2011-09-10 2011-10-08 유연성을 갖춘 메타데이터 구성 기법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020147006175A KR101798705B1 (ko) 2011-09-10 2011-10-08 유연성을 갖춘 메타데이터 구성 기법

Country Status (5)

Country Link
US (3) US8433697B2 (ko)
EP (1) EP2754034A4 (ko)
JP (4) JP5852246B2 (ko)
KR (2) KR101924747B1 (ko)
WO (1) WO2013036248A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005338008A (ja) 2004-05-28 2005-12-08 Asahi Kasei Electronics Co Ltd センサの試験用治具基板及び試験装置並びに試験方法
US8433697B2 (en) 2011-09-10 2013-04-30 Microsoft Corporation Flexible metadata composition
US8738581B1 (en) * 2012-02-15 2014-05-27 Symantec Corporation Using multiple clients for data backup
JP5843965B2 (ja) * 2012-07-13 2016-01-13 株式会社日立ソリューションズ 検索装置、検索装置の制御方法及び記録媒体
US11061859B2 (en) 2018-12-19 2021-07-13 Red Hat, Inc. Object creation from hierarchical metadata stored on a storage device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6330567B1 (en) 1998-08-13 2001-12-11 Tornado Technologies Co., Ltd Searching system for searching files stored in a hard disk of a personal computer
US20060195414A1 (en) 2004-06-25 2006-08-31 Yan Arrouye Methods and systems for managing data
US20080052329A1 (en) 2006-08-25 2008-02-28 Dan Dodge File system having variable logical storage block size
US20090113351A1 (en) 2007-10-29 2009-04-30 Kabushiki Kaisha Toshiba Document management system, document management method and document management program

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2171568A1 (en) * 1995-03-24 1996-09-25 Peter B. Kessler Method and system for type identification for multiple object interfaces in a distributed object environment
US6035297A (en) * 1996-12-06 2000-03-07 International Business Machines Machine Data management system for concurrent engineering
US6560613B1 (en) 2000-02-08 2003-05-06 Ensim Corporation Disambiguating file descriptors
US6856993B1 (en) * 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
US20020103920A1 (en) * 2000-11-21 2002-08-01 Berkun Ken Alan Interpretive stream metadata extraction
US7216289B2 (en) 2001-03-16 2007-05-08 Microsoft Corporation Method and apparatus for synchronizing multiple versions of digital data
EP1490767B1 (en) * 2001-04-05 2014-06-11 Audible Magic Corporation Copyright detection and protection system and method
EP1436873B1 (en) * 2001-09-28 2009-04-29 Commvault Systems, Inc. System and method for generating and managing quick recovery volumes
US7743045B2 (en) * 2005-08-10 2010-06-22 Google Inc. Detecting spam related and biased contexts for programmable search engines
US7865498B2 (en) * 2002-09-23 2011-01-04 Worldwide Broadcast Network, Inc. Broadcast network platform system
AU2003248534A1 (en) * 2003-05-16 2005-01-21 Microsoft Corporation Declarative mechanism for defining a hierarchy of objects
US7774326B2 (en) 2004-06-25 2010-08-10 Apple Inc. Methods and systems for managing data
US7962465B2 (en) * 2006-10-19 2011-06-14 Yahoo! Inc. Contextual syndication platform
US7941402B2 (en) * 2004-09-24 2011-05-10 Sap Ag Storing and using classes in databases
US8429131B2 (en) 2004-11-17 2013-04-23 Autonomy, Inc. Systems and methods for preventing digital asset restoration
WO2006096939A1 (en) * 2005-03-18 2006-09-21 Kwok Kay Wong Remote access of heterogeneous data
JP2007006214A (ja) * 2005-06-24 2007-01-11 Nippon Telegr & Teleph Corp <Ntt> リソース情報検索システム、リゾルバ及びプログラム
US7797359B1 (en) * 2005-08-23 2010-09-14 Hewlett-Packard Development Company, L.P. Recursive data naming
US20070169079A1 (en) 2005-11-08 2007-07-19 Microsoft Corporation Software update management
US20080040388A1 (en) 2006-08-04 2008-02-14 Jonah Petri Methods and systems for tracking document lineage
US8005806B2 (en) * 2006-11-15 2011-08-23 Yahoo! Inc. System and method for information retrieval using context information
US7797295B2 (en) * 2007-01-04 2010-09-14 Yahoo! Inc. User content feeds from user storage devices to a public search engine
US7822765B2 (en) * 2007-07-20 2010-10-26 Fuji Xerox Co., Ltd. Component-based control system for collaborative exploratory search systems
US8010779B2 (en) * 2007-09-19 2011-08-30 Novell Inc. Techniques for secure network searching
US8219563B2 (en) * 2008-12-30 2012-07-10 Oracle International Corporation Indexing mechanism for efficient node-aware full-text search over XML
US8627331B1 (en) * 2010-04-30 2014-01-07 Netapp, Inc. Multi-level parallelism of process execution in a mutual exclusion domain of a processing system
US9165307B2 (en) * 2011-03-29 2015-10-20 Open Text S.A. System, method and computer program product for templated export of content
US8689184B2 (en) * 2011-03-30 2014-04-01 The Procter & Gamble Company Apparatus, system, and method for managing industrial software configurations
US8849880B2 (en) * 2011-05-18 2014-09-30 Hewlett-Packard Development Company, L.P. Providing a shadow directory and virtual files to store metadata
US8645388B1 (en) * 2011-06-16 2014-02-04 Emc Corporation Method and system for processing a query
US20130055291A1 (en) * 2011-08-31 2013-02-28 Microsoft Corporation Describing native application programming interfaces of an operating system with metadata
US8433697B2 (en) 2011-09-10 2013-04-30 Microsoft Corporation Flexible metadata composition

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6330567B1 (en) 1998-08-13 2001-12-11 Tornado Technologies Co., Ltd Searching system for searching files stored in a hard disk of a personal computer
US20060195414A1 (en) 2004-06-25 2006-08-31 Yan Arrouye Methods and systems for managing data
US20080052329A1 (en) 2006-08-25 2008-02-28 Dan Dodge File system having variable logical storage block size
US20090113351A1 (en) 2007-10-29 2009-04-30 Kabushiki Kaisha Toshiba Document management system, document management method and document management program

Also Published As

Publication number Publication date
US20140149437A1 (en) 2014-05-29
US8914350B2 (en) 2014-12-16
KR20140068943A (ko) 2014-06-09
JP2017123174A (ja) 2017-07-13
KR101798705B1 (ko) 2017-11-16
WO2013036248A1 (en) 2013-03-14
JP2016066367A (ja) 2016-04-28
CN103049299A (zh) 2013-04-17
JP2014526727A (ja) 2014-10-06
EP2754034A1 (en) 2014-07-16
US20150074128A1 (en) 2015-03-12
JP6088031B2 (ja) 2017-03-01
KR20170127060A (ko) 2017-11-20
JP6338713B2 (ja) 2018-06-06
EP2754034A4 (en) 2015-04-08
US9043305B2 (en) 2015-05-26
JP6338714B2 (ja) 2018-06-06
JP2017111832A (ja) 2017-06-22
US20130066899A1 (en) 2013-03-14
US8433697B2 (en) 2013-04-30
JP5852246B2 (ja) 2016-02-03

Similar Documents

Publication Publication Date Title
KR101944570B1 (ko) 변형 컨텍스트-인식 데이터 소스 관리
CN108139891B (zh) 用于生成建议以纠正未定义标记错误的方法和系统
KR101795844B1 (ko) 런타임 시스템
US9116707B2 (en) Dependency resolution in polyphasic modules
US20200272440A1 (en) Container image building using dependency container images
US11074154B2 (en) Identifying a source file for use in debugging compiled code
US9524279B2 (en) Help document animated visualization
CN109564540B (zh) 用于jit编译器的调试的系统、方法和设备
JP6338713B2 (ja) 柔軟性の高いメタデータの合成
US20100313182A1 (en) Extensible user interface generation
US10649744B1 (en) Systems and methods for handling renaming of programming constructs in programming environments
KR20080038306A (ko) 널가능과 후 바인딩
CN113377342A (zh) 一种项目构建方法、装置、电子设备及存储介质
US20210240596A1 (en) Source code file retrieval
US20080222598A1 (en) Using a system of annotations to generate views and adapters
US10055207B2 (en) Persistent variables in programming languages
US20240152507A1 (en) Schema-free static query template
Classon et al. Phase 1: Analysis
CN111273956A (zh) 一种程序模块加载方法、装置、设备及存储介质
Sterling A Universal Framework for (nearly) Arbitrary Dynamic Languages
McKenna Semantic graphs in support of software reverse engineering.

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant