KR100938077B1 - 확장 가능한 파일 포맷 - Google Patents

확장 가능한 파일 포맷 Download PDF

Info

Publication number
KR100938077B1
KR100938077B1 KR1020047005707A KR20047005707A KR100938077B1 KR 100938077 B1 KR100938077 B1 KR 100938077B1 KR 1020047005707 A KR1020047005707 A KR 1020047005707A KR 20047005707 A KR20047005707 A KR 20047005707A KR 100938077 B1 KR100938077 B1 KR 100938077B1
Authority
KR
South Korea
Prior art keywords
version
data file
original data
application program
watermark
Prior art date
Application number
KR1020047005707A
Other languages
English (en)
Other versions
KR20040048962A (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 KR20040048962A publication Critical patent/KR20040048962A/ko
Application granted granted Critical
Publication of KR100938077B1 publication Critical patent/KR100938077B1/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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/116Details of conversion of file system types or formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Processing (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 어플리케이션 프로그램의 이전 버전, 현재 버전 및 미래 버전과 호환되는 확장가능한 파일 포맷을 제공할 수 있다. 본 발명은 어플리케이션 프로그램의 원본 데이터 파일에 파일 버전 워터마크를 포함하여 구성될 수 있다. 파일 버전 워터마크는 원본 데이터 파일의 다양한 속성을 나타낼 수 있다. 파일 버전 워터마크는 높은 버전 워터마크, 최종 버전 워터마크, 낮은 버전 워터마크, 생성 버전 워터마크 및 오브젝트 버전 워터마크를 포함할 수 있다. 각각의 파일 버전 워터마크는 파일에 행해지는 변경, 추가 또는 삭제를 나타낼 수 있다. 본 발명은 파일 또는 파일 내의 특정 정보가 어플리케이션 프로그램의 이전 버전에 대응하는지, 현재 버전에 대응하는지, 또는 미래 버전에 대응하는지를 결정하기 위하여 파일 버전 워터마크를 사용할 수 있다. 따라서, 본 발명은 이러한 결정을 기초로 원본 데이터 파일을 로드 또는 저장할 수 있다.
워터마크, 오브젝트, 속성

Description

확장 가능한 파일 포맷{EXTENSIBLE FILE FORMAT}
본 발명은 일반적으로 컴퓨터 시스템 및 프로그램에 관한 것이다. 더 상세하게는, 본 발명은 어플리케이션 프로그램의 이전 버전, 현재 버전 및 미래 버전에 호환되는 파일 포맷을 제공할 수 있는 시스템 및 방법에 관한 것이다.
컴퓨터 어플리케이션 프로그램은 일반적으로 많은 컴퓨터 프로세싱 태스크를 수행하는 데 사용된다. 어플리케이션 프로그램은 어플리케이션 프로그램에 대한 특정 항목의 정보를 저장하는 데이터 파일을 생성하거나 변경하는 데 사용될 수 있다. 예를 들어, 전자 출판형(desktop publishing type)의 어플리케이션 프로그램을 사용하여 문서가 생성될 수 있다. 상기 문서는 헤더, 텍스트, 그래픽, 스타일, 폰트 등과 같은 많은 개별 요소를 포함할 수 있다. 출판형 어플리케이션 프로그램은 상기 특정 문서의 모든 정보를 저장하는 데이터 파일을 생성하는 데 사용될 수 있다.
컴퓨터 시스템에 파일을 저장하는 모든 어플리케이션 프로그램은, 데이터를 저장하기 위한 포맷을 결정해야 한다. 데이터의 메모리 이미지를 저장하는 것에서 데이터를 업계 표준 형식으로 기록하는 것에 이르는 많은 데이터 저장 방법이 존재한다. 추가적으로, 컴퓨터 어플리케이션 프로그램은 사용가능한 최신 기능 및 기술을 제공하기 위하여 끊임없이 업데이트 및 변경되고 있다. 업데이트와 변경은 일반적으로 어플리케이션 프로그램의 업데이트된 버전을 배포함으로써 최종 사용자에게 제공된다. 어플리케이션 프로그램의 업데이트된 버전에 의해 사용되는 파일 포맷은 이전 버전 및 미래 버전과 호환되어야 한다. 그러나, 업데이트된 버전의 새로운 기능은 새로운 데이터가 데이터 파일에 기록될 것을 요구하기 때문에, 업데이트된 버전은 일반적으로 이전 버전과는 다른 파일 포맷을 사용한다. 다른 파일 포맷은 이전 버전이 업데이트된 버전의 파일을 판독하는 것을 방해할 수 있기 때문에, 어플리케이션 프로그램의 다른 두 버전 사이에서 문제가 발생될 수 있다.
본 명세서에서 사용되는 "오브젝트"는, 특성을 갖고 어플리케이션 프로그램에 의해 디스플레이되는 실체를 의미하며, 어플리케이션 프로그램의 일부 또는 프로그램에 의해 저장/처리되는 데이터의 일부이다. 어플리케이션 프로그램에 의해 디스플레이되는 오브젝트의 일례는, 어플리케이션 프로그램의 윈도우 내에 포함되는 텍스트 박스이며, 사용자는 여기에 텍스트를 입력할 수 있다. 텍스트 박스의 특성은 텍스트의 색, 폰트 및 포인트 크기를 포함할 수 있다. 어플리케이션 프로그램의 일부인 오브젝트의 예는 메모리 내의 동물 묘사이며, 그 특성은 동물의 색, 다리 수 및 육식 동물인지의 여부를 포함할 수 있다. 이러한 메모리 내의 묘사는 특성을 저장하고 있는 데이터 구조의 요소를 가진 데이터 구조로서 구현될 수 있다. 그러한 데이터 구조의 일례는 C++ 클래스 데이터 구조이다. 오브젝트의 특성은 오브젝트의 속성으로서 나타난다. 오브젝트의 각각의 속성은 일반적으로 값을 갖는다. 예를 들어, 색 속성은 "적색" 값을 가질 수 있다.
오브젝트(100)의 예가 도 1에서 설명된다. 오브젝트(100)는 경계선(102) 및 텍스트(104)를 포함할 수 있다. 오브젝트(100)는 경계선(102) 및 텍스트(104)에 대한 6개의 속성을 가질 수 있다. 경계선(102)은 경계선 스타일 및 경계선 크기의 속성을 가질 수 있다. 텍스트(104)는 폰트, 텍스트 크기, 자리맞춤 및 텍스트 스타일의 속성을 가질 수 있다. 경계선(102) 및 텍스트(104)에 대한 디폴트 값은, 경계선 스타일은 실선, 경계선 크기는 4 포인트, 텍스트 폰트는 "타임즈 뉴 로만", 텍스트 크기는 20 포인트, 텍스트 자리맞춤은 왼쪽, 및 텍스트 스타일은 "논-이텔릭"이 될 수 있다.
어플리케이션 프로그램에서, 오브젝트와 속성의 디폴트 값은 초기 프로그래밍 동안에 설정될 수 있다. 프로그램의 수행 동안에는, 디폴트 값이 변경되어 데이터 파일 내에 저장될 수 있다. 예를 들어, 사각형 및 삼각형과 같은 오브젝트를 디스플레이할 수 있는 그림 프로그램에서, 사용자는 오브젝트의 속성을 수정할 수 있다. 도 1의 예로 돌아와서, 오브젝트(100)의 속성이 변경되어 실선이 단선이 되고 텍스트 스타일이 이텔릭으로 될 수 있다. 프로그램의 나중 버전은 일반적으로 각 오브젝트에 대한 디폴트 값 및 변경을 판독할 수 있다. 그러나, 프로그램의 나중 버전이 생성될 때, 파일 포맷은 일반적으로 이전 버전의 파일 포맷과 다르다. 따라서, 이전 버전은 나중 버전으로부터의 파일을 판독할 수 없다. 이전 단락으로부터 상기 예를 이용하면, 나중 버전은 오브젝트(100)에 대한 그림자와 같은 새로운 기능을 포함할 수 있다. 추가된 기능은 새로운 데이터가 프로그램의 파일에 기록되도록 요구하고, 그 때문에 포맷이 변하게 된다. 파일 포맷이 다르기 때문에, 이전 버전은 새로운 데이터를 포함하는 나중 버전의 파일을 판독할 수 없다.
전술한 문제에 대한 하나의 통상적인 해결책은, 업데이트되는 버전의 새로운 기능을 제한하여 파일 포맷이 이전 버전과 여전히 호환되게 하는 것이다. 그러나, 이러한 해결책은 최고의 상품이 사용자에게 배포되는 것을 방해하고, 프로그램의 전체적인 기능 및 성능을 제한할 수 있다.
전술한 문제에 대한 다른 통상적인 해결책은, 이전 버전으로부터의 오래된 파일을 업데이트된 버전과 호환되는 새로운 파일로 변환시키는 어댑터 프로그램을 생성하는 것이다. 어댑터 프로그램은 새로운 파일을 이전 버전과 호환되는 파일로 변환시킬 수 있다. 그러나, 이러한 해결책은 사용자에게 있어서 불편할 수 있고, 많은 양의 메모리 및 파일을 변환시키는 처리 시간을 요구할 수 있다. 더욱이, 이러한 해결책은, 파일이 이전 버전에 의해서 저장될 때 사용자가 프로그램의 새로운 버전에 의해 요구되는 중요한 정보를 손실하는 것을 야기할 수 있다.
그러므로, 본 기술 분야에서는 어플리케이션 프로그램의 이전 버전, 현재 버전 및 미래 버전과 호환되는 파일 포맷을 제공할 수 있는 개선된 시스템 및 방법이 필요하다. 또한, 본 기술 분야에서는 이전 버전과 여전히 호환되면서 어플리케이션 프로그램의 미래 버전에 새로운 기능이 추가되게 할 수 있는 확장 가능한 파일 포맷 또한 필요하다.
본 발명은 일반적으로 어플리케이션 프로그램의 이전 버전, 현재 버전 및 미래 버전과 호환될 수 있는 확장 가능한 파일 포맷을 제공하기 위한 시스템 및 방법 에 관한 것이다. 본 발명은, 이전 버전 및/또는 현재 버전과 여전히 호환되면서(수정하지 않고), 어플리케이션 프로그램의 미래 버전에 새로운 기능을 추가하는 것을 지원하는 확장 가능한 파일 포맷에 관한 것이다. 따라서, 본 발명은 소프트웨어 공급자가 미래 버전에 추가될 수 있는 기능을 제한하지 않고 복수 버전 호환성에 동일한 파일을 제공하게 할 수 있다.
한 예시적인 양태에서, 본 발명은 어플리케이션 프로그램의 원본 데이터 파일 내에 파일 버전 워터마크를 포함하여 구성될 수 있다. 파일 버전 워터마크는 원본 데이터 파일의 다양한 속성을 나타낼 수 있는 원본 데이터 파일의 한 요소가 될 수 있다. 예를 들어, 높은 버전 워터마크는, 원본 데이터 파일을 저장하는 데 사용된 어플리케이션 프로그램의 가장 높은 버전을 나타내기 위하여 이 원본 데이터 파일에 제공될 수 있다. 최종 버전 워터마크는, 원본 데이터 파일을 저장하는 데 사용된 어플리케이션 프로그램의 최종 버전을 나타내기 위하여 이 원본 데이터 파일에 제공될 수 있다. 낮은 버전 워터마크는, 원본 데이터 파일을 저장하는 데 사용된 어플리케이션 프로그램의 가장 낮은 버전을 나타내기 위하여 이 원본 데이터 파일에 제공될 수 있다. 생성 버전 워터마크는, 원본 데이터 파일을 최초로 생성했던 어플리케이션 프로그램의 버전을 나타내기 위하여 이 원본 데이터 파일에 제공될 수 있다. 오브젝트 버전 워터마크는, 특정 오브젝트를 기록한 어플리케이션 프로그램의 가장 높은 버전을 나타내기 위하여 원본 데이터 파일에 제공될 수 있다. 각각의 파일 버전 워터마크는 파일에 행해진 변경, 추가 또는 삭제를 나타낼 수 있다.
다른 예시적인 양태에서, 본 발명은 하나 이상의 파일 버전 워터마크에서 제공된 정보에 기초하여 원본 데이터 파일을 로드하고 저장하는 방법을 결정하는 것을 포함할 수 있다. 한 예시적인 양태에서, 본 발명은 파일 내의 높은 버전 워터마크가 파일을 로드 또는 저장하고 있는 어플리케이션 프로그램의 현재 버전보다 더 새로운 버전을 나타내는지의 여부를 판정할 수 있다. 원본 데이터 파일이 현재 버전에 대하여 더 새로운 버전의 어플리케이션 프로그램에 의해 저장된 적이 있다면, 높은 버전 워터마크는 더 새로운 버전을 나타낸다. 그러한 경우에, 본 발명은 원본 데이터 파일이 현재 버전에 알려지지 않은 정보를 포함하는지의 여부를 판정할 수 있다. 알려지지 않은 정보는 어플리케이션 프로그램의 현재 버전에 의해 무시되고 더 새로운(더 나중의) 버전에 의한 사용을 위하여 보유될 수 있다.
다른 예시적인 양태에서, 본 발명은 파일 내의 높은 버전 워터마크가 파일을 로드 또는 저장하는 어플리케이션 프로그램의 현재 버전보다 더 오래된 버전을 나타내는지의 여부를 판정할 수 있다. 원본 데이터 파일이 현재 버전에 대하여 어플리케이션 프로그램의 더 오래된 버전에 의해 저장되었다면, 높은 버전 워터마크는 현재 버전보다 더 오래된 버전을 나타낸다. 그러한 경우에, 본 발명은 현재 버전이 원본 데이터 파일 내의 오래된 정보에 기초한 새로운 정보를 포함하는지의 여부를 판정할 수 있다. 새로운 정보는 오래된 정보에 기초하여 업데이트될 수 있다. 추가적으로, 새로운 정보는 더 오래된(이전) 버전, 현재 버전, 더 새로운(나중) 버전에 의한 사용을 위하여 더 오래된 버전 뿐만 아니라 현재 버전 및 더 새로운 버전의 포맷으로 데이터를 저장함으로써 저장될 수 있다.
본 발명의 다른 예시적인 양태에 따르면, 어플리케이션 프로그램의 메모리 내의 구조는 데이터 파일 포맷으로부터 분리될 수 있다. 따라서, 어플리케이션 프로그램의 미래 버전은 데이터 파일 포맷을 변경하지 않고 많은 새로운 기능을 포함할 수 있다. 예를 들어, 데이터 파일 포맷이 다르기 때문에 다른 버전과 호환되지 않는 것 없이 특정 프로세서 타입에 있어서 더 효율적이도록 구조가 메모리 내에서 옮겨질(move around) 수 있다.
본 발명은 어플리케이션 프로그램의 상이한 버전들에 대응하는 데이터 파일을 로드 및 저장하는 데 필요한 메모리 및 처리의 양을 최소화할 수도 있다. 파일 버전 워터마크는 상이한 버전에 대응하는 데이터 파일 내의 특정 정보를 식별할 수 있다. 따라서, 임의의 처리 또는 변환은 식별된 정보 상에서만 수행될 수 있다.
본 발명의 다른 예시적인 양태는 데이터 파일 구조로서 OPL("object property list") 또는 OPL 배열("object property list array")을 포함한다. OPL 또는 OPL 배열은, 알려지지 않은 데이터를 저장된 데이터 파일로 전달 또는 반환함으로써 미래 버전으로부터의 알려지지 않은 속성 데이터의 "라운드-트립(round-tripping)"을 허용할 수 있다. OPL 또는 OPL 배열은 메모리 내로 로드될 수 있다. 어플리케이션 프로그램의 특정 버전에 의해 알려진 이러한 OPL 또는 OPL 배열 속성 모두는 필요시 덮어 쓰기(overwrite)될 수 있다. 남아있는 속성(즉, 특정 버전에서는 알려지지 않은 속성)은 더 새로운 버전에 의해 생성된 것이고, 파일 내에 조작되지 않고 남아 있을 수 있다. 데이터 파일 내에 저장되는 메모리 구조마다, 이러한 구조를 저장하기 위한 관련된 OPL 또는 OPL 배열이 존재할 수 있다.
본 발명의 이들 및 다른 양태, 목적 및 기능은, 첨부된 도면에 관련하고 이를 참조하여 읽혀지는 바람직한 실시예의 이하 상세한 설명으로부터 명백해 질 것이다.
도 1은 어플리케이션 프로그램에 의해 사용되는 오브젝트를 도시하는 블록도.
도 2는 본 발명의 예시적인 실시예를 실행하는 데 적합한 예시적인 컴퓨터를 도시하는 블록도.
도 3은 통상적인 OPL의 특성을 도시하는 블록도.
도 4는 본 발명의 예시적인 실시예에 따른 OPL 배열의 특성을 도시하는 블록도.
도 5는 본 발명의 예시적인 실시예에 따른 원본 데이터 파일을 로드하기 위한 방법을 도시하는 흐름도.
도 6은 본 발명의 예시적인 실시예에 따른 원본 데이터 파일을 저장하기 위한 방법을 도시하는 흐름도.
도 7은 현재 버전이 이전 버전에 포함되지 않는 추가적인 오브젝트 속성을 갖는 경우, 본 발명에 따라 원본 데이터 파일을 로드 및 저장하기 위한 방법을 도시하는 흐름도.
도 8은 현재 버전이 이전 버전에서 사용되었던 오브젝트 속성을 삭제한 경우, 본 발명에 따라 원본 데이터 파일을 로드 및 저장하기 위한 방법을 도시하는 흐름도.
도 9는 현재 버전이 이전 버전의 오래된 오브젝트 속성을 수정한 경우, 본 발명에 따라 원본 데이터 파일을 로드 및 저장하기 위한 방법을 도시하는 흐름도.
본 발명은 동일한 참조 번호가 동일한 구성 요소를 나타내는 첨부 도면에 관련하여 상세하게 설명될 것이다.
본 발명은 어플리케이션 프로그램의 이전 버전, 현재 버전 및 미래 버전과 호환되는 확장 가능한 파일 포맷을 제공할 수 있다. 본 발명은 어플리케이션 프로그램의 원본 데이터 파일 내에 파일 버전 워터마크를 포함하여 구성될 수 있다. 파일 버전 워터마크는 원본 데이터 파일의 다양한 속성을 나타낼 수 있다. 파일 버전 워터마크는 높은 버전 워터마크, 최종 버전 워터마크, 낮은 버전 워터마크, 생성 버전 워터마크 및 오브젝트 버전 워터마크를 포함할 수 있다. 각각의 파일 버전 워터마크는 파일에 행해진 변경, 추가 또는 삭제를 나타낼 수 있다. 파일 버전 워터마크 각각은 특정 정보를 수정한 버전을 나타내기 위하여 파일 내의 특정 오브젝트와 같은 파일 내의 특정 정보에도 제공될 수 있다. 본 발명은 파일 또는 파일 내의 특정 정보가 어플리케이션 프로그램의 이전 버전, 현재 버전 또는 미래 버전에 대응하는지의 여부를 판정하기 위하여 파일 버전 워터마크를 사용할 수 있다. 따라서, 본 발명은 상기 판정의 결과에 기초하여 원본 데이터 파일을 로드 또는 저장할 수 있다.
도 2는 본 발명이 동작하도록 설계된 예시적인 컴퓨팅 환경의 다양한 양태를 도시한다. 본 기술 분야에 숙련된 기술자는, 도 2 및 관련된 논의가 바람직한 컴퓨터 하드웨어 및 프로그램 모듈의 간단하고 일반적인 설명을 제시하기 위한 것이며, 추가적인 정보는 적합한 프로그래밍 매뉴얼, 사용자 가이드 및 유사한 출판물에서 쉽게 입수 가능하다는 것을 알 것이다.
도 2는 본 발명의 바람직한 실시예의 동작을 지원하는 데 적합한 통상적인 퍼스널 컴퓨터(10)를 도시한다. 도 2에서 도시되는 바와 같이, 퍼스널 컴퓨터(10)는 원격 서버(11)에 논리적으로 접속된 네트워크화된 환경에서 동작한다. 퍼스널 컴퓨터(10)와 원격 서버(11) 간의 논리적 접속은 근거리 네트워크(12) 및 광역 네트워크(13)에 의해 나타난다. 본 기술 분야에 통상의 기술을 가진 자는, 이러한 클라이언트/서버 구성에서 원격 서버(11)가 파일 서버 또는 컴퓨터 서버로서 기능할 수 있다는 것을 인식할 것이다.
퍼스널 컴퓨터(10)는 캘리포니아주 산타 클라라 소재의 인텔사에 의해 제조된 "팬티엄" 마이크로프로세서와 같은 프로세싱 유닛(14)을 포함한다. 퍼스널 컴퓨터(10)는 시스템 버스(18)에 의해 프로세서(14)에 접속되는 ROM(read only memory)(16) 및 RAM(random access memory)(17)을 포함하는 시스템 메모리(15)도 포함한다. 바람직한 컴퓨터(10)는 ROM(16) 내에 저장되어 있는 BIOS(19)를 사용한다. 본 기술 분야에 숙련된 기술자는, BIOS(19)가 퍼스널 컴퓨터(10) 내의 요소들 간에 정보를 전송하는 것을 돕는 기본 루틴의 세트라는 것을 인식할 것이다. 본 기술 분야에 숙련된 기술자는, 본 발명이 BIOS를 사용하지 않는 컴퓨터와 같은 기타 아키텍처를 갖는 컴퓨터, 및 기타 마이크로프로세서를 사용하는 컴퓨터 상에서 구현될 수 있다는 것도 알 것이다.
퍼스널 컴퓨터(10) 내에서, 로컬 하드 디스크 드라이브(20)는 하드 디스크 드라이브 인터페이스(21)를 통해서 시스템 버스(18)에 접속된다. 플로피 디스크(23)를 판독 또는 기록하는 데 사용되는 플로피 디스크 드라이브(22)는 플로피 디스크 드라이브 인터페이스(24)를 통해서 시스템 버스(18)에 접속된다. CD-ROM 또는 DVD 디스크(26)를 판독하는 데 사용되는 CD-ROM 또는 DVD 드라이브(25)는 CD-ROM 또는 DVD 인터페이스(27)를 통해서 시스템 버스(18)에 접속된다. 사용자는 직렬 포트 인터페이스(30)를 통해서 시스템 버스(18)에 접속되는 키보드(28) 및/또는 마우스(29)와 같은 포인팅 장치와 같은 입력 장치를 사용함으로써 퍼스널 컴퓨터(10)로 명령 및 정보를 입력한다. 포인팅 장치의 기타 유형(도 2에 도시되지 않음)은 트랙 패드, 트랙 볼, 펜, 헤드 트랙터, 데이터 글러브 및 컴퓨터 모니터(31) 상에서 커서를 위치시키는 데 적합한 기타 장치를 포함한다. 모니터(31) 또는 기타 유형의 디스플레이 장치는 비디오 어댑터(32)를 통해서 시스템 버스(18)에 접속된다.
네트워크화된 환경 내의 원격 서버(11)는 원격 메모리 저장 장치(33)에 접속된다. 원격 메모리 저장 장치(33)는 일반적으로 하드 디스크 드라이브, CD-ROM 또는 DVD 드라이브 및 광 자기 드라이브 등과 같은 대용량 장치이다. 본 기술 분야에 숙련된 기술자는 어플리케이션 프로그램 모듈(37C 및 37D)과 같은 프로그램 모듈이 컴퓨터 판독가능 매체를 통해서 원격 서버(11)로 제공된다는 것을 이해할 것이다. 퍼스널 컴퓨터(10)는 근거리 네트워크(12) 상에서 통신하는 데 사용되는 네트워크 인터페이스(34)에 의해 원격 서버(11)로 접속된다.
대안적인 실시예에서, 퍼스널 컴퓨터(10)는 인터넷과 같은 광역 네트워크(13) 상에서 통신하는 데 사용되는 모뎀(35)에 의해서도 원격 서버(11)로 접속된다. 모뎀(35)은 직렬 포트 인터페이스(30)를 통해서 시스템 버스(18)에 접속된다. 모뎀(35)은 PSTN(public switched telephone network) 또는 CATV(community antenna television) 네트워크에도 접속될 수 있다. 본 기술 분야에 통상의 기술을 가진 자는, 모뎀(35)이 도 2에서 퍼스널 컴퓨터(10)에 외장형으로서 도시되었지만 퍼스널 컴퓨터(10)에 내장형으로서 시스템 버스(18)를 통해서 직접 통신할 수도 있다는 것을 인식할 수 있다. 근거리 네트워크(12) 및 광역 네트워크(13) 양자를 통한 원격 서버(11)로의 접속이 필수적인 적은 아니며, 단지 퍼스널 컴퓨터(10)와 원격 서버(11) 간의 통신 경로를 제공하는 대안적인 방법을 도시한 것이라는 바에 유념하는 것이 중요하다.
퍼스널 컴퓨터(10)의 기타 내부 구성 요소가 도시되지 않았지만, 본 기술 분야에 통상의 기술을 가진 자는 그러한 구성 요소 및 그들 간의 상호 접속이 잘 알려져 있다는 것을 인식할 것이다. 따라서, 퍼스널 컴퓨터(10)의 내부 구성에 관련한 추가적인 상세한 사항은 본 발명에 관하여 개시될 필요가 없다.
본 기술 분야에 숙련된 기술자는 오퍼레이팅 시스템(36), 어플리케이션 프로그램 모듈(37A), 브라우저 프로그램 모듈(37B), 기타 프로그램 모듈(37N) 및 데이터와 같은 프로그램 모듈이 컴퓨터 판독가능 매체를 통해서 퍼스널 컴퓨터(10)에 제공된다고 이해할 것이다. 바람직한 컴퓨터(10)에서, 컴퓨터 판독가능 매체는 로컬 하드 디스크 드라이브(20), 플로피 디스크(23), CD-ROM 또는 DVD(26), RAM(17), ROM(16) 및 원격 메모리 저장 장치(33)를 포함할 수 있는 로컬 또는 원격 메모리 저장 장치를 포함한다. 바람직한 퍼스널 컴퓨터(10)에서, 로컬 하드 디스크 드라이브(20)는 데이터 및 프로그램을 저장하는 데 사용된다.
프로그램 모듈(37N)은 본 발명의 예시적인 실시예에 따른 확장 가능한 파일 포맷의 파일을 가질 수 있는 어플리케이션 프로그램을 포함할 수 있다. 제1 어플리케이션 프로그램은 확장 가능한 파일 포맷의 OPL(object property list)을 포함할 수 있는 오브젝트를 관리할 수 있다. OPL은 시스템 메모리(16)의 연속적인 블록 내에 저장될 수 있다. 제2 어플리케이션 프로그램은 오브젝트의 OPL을 액세스할 수 있고, 이하에서 설명될 바와 같이 이 OPL을 사용하여 다양한 기능을 수행할 수 있다.
OPL은 데이터 파일 내에 데이터를 저장하기 위한 데이터 구조이다. OPL의 더 상세한 설명은 미국 특허 제 5,933,842 및 5,946,696호에서 찾아 볼 수 있다. 이러한 특허의 개시물은 본원에 참조로서 포함된다.
통상적인 OPL은 데이터 파일에 대한 데이터 구조를 제공한다. 그러한 데이터 구조는 일반 포맷에서의 정보 저장이 어플리케이션 프로그램의 이전 버전 및 미래 버전과의 호환성을 제공하는 데 유용할 수 있게 한다. OPL의 포맷은 어플리케이션 프로그램이 인식하지 못하는 데이터는 사용하지 않고 건너 뛰면서도(skipping over) 어플리케이션 프로그램이 인식하는 데이터는 사용할 수 있다. 통상적인 OPL은 새로운 오브젝트 및 속성을 위하여 동적으로 확장될 수 있기 때문에 어플리케이션 프로그램의 새로운 버전으로 된 새로운 정보를 갖도록 성장할 수 있다.
도 3에 관련해서, 통상적인 OPL(300)의 특성이 설명될 것이다(OPL과 관련된 정보를 더 얻으려면, 미국 특허 제 5,933,842 및 5,946,696호 참조).
본 명세서에서 사용되는 "오브젝트"는 특성을 가지고 있고 어플리케이션 프로그램에 의해 디스플레이되거나 어플리케이션 프로그램의 일부인 실체를 나타낸다. 어플리케이션 프로그램에 의해 디스플레이되는 오브젝트의 일례는 어플리케이션 프로그램의 윈도우 내에 포함되는 텍스트 박스이며 사용자는 이 박스에 텍스트를 입력할 수 있다. 텍스트 박스의 특성은 텍스트의 색, 폰트 및 포인트 크기를 포함할 수 있다. 어플리케이션 프로그램의 일부인 오브젝트의 예는 메모리 내의 동물 묘사이며, 그 특성은 동물의 색, 다리 수 및 육식 동물인지의 여부를 포함할 수 있다. 이러한 메모리 내의 묘사는 특성을 저장하고 있는 데이터 구조의 요소를 가진 데이터 구조로서 구현될 수 있다. 그러한 데이터 구조의 일례는 C++ 클래스 데이터 구조이다. 오브젝트의 특성은 오브젝트의 속성으로서 나타난다. 오브젝트의 각각의 속성은 일반적으로 값을 갖는다. 예를 들어, 색 속성은 "적색" 값을 가질 수 있다.
배경기술 부분에서 논의된 바와 같이, 오브젝트(100)의 일례는 도 1에서 도시된다. 오브젝트(100)는 경계선(102) 및 텍스트(104)를 포함할 수 있다. 오브젝트(100)는 경계선(102) 및 텍스트(104)에 대한 6개의 속성을 가질 수 있다. 경계선(102)은 경계선 스타일 및 경계선 크기의 속성을 가질 수 있다. 텍스트(104)는 폰트, 텍스트 크기, 자리맞춤 및 텍스트 스타일의 속성을 가질 수 있다. 경계선(102) 및 텍스트(104)에 대한 디폴트 값은, 경계선 스타일은 실선, 경계선 크기는 4 포인트, 텍스트 폰트는 "타임즈 뉴 로만", 텍스트 크기는 20 포인트, 텍스트 자리맞춤은 왼쪽, 및 텍스트 스타일은 "논-이텔릭"이 되는 것일 수 있다.
OPL(300)은 표준 형식을 사용하기 때문에, 오브젝트의 속성을 내부적으로 저장하는 데 사용될 수 있다. 예를 들어, OPL(300)은 오브젝트 속성 식별("opyid") 요소(302), 오브젝트 속성 타입 요소(304) 및 오브젝트 속성 값 요소(306)를 포함할 수 있다. opyid 요소(302)는 특정 속성에 관련된 숫자 식별자를 포함할 수 있다. 시스템은 모든 속성에 대한 이 속성들의 opyid로의 맵핑을 보유할 수 있으며, 이러한 맵핑은 OPL마다 다양할 수 있다. 다시 말하면, 각각의 OPL은 opyid 값이 나타내는 속성이 무엇이지를 정의할 수 있고, 다른 OPL은 별개의 속성에 대해서 동일한 opyid 값을 사용할 수 있다. 오브젝트 속성 타입 요소(304)는 짧은 정수형(Short Integer)(2 바이트), 긴 정수형(Long Integer)(4 바이트) 및 유니코드 스트링(Unicode string) 등과 같은 데이터 타입을 나타낸다. 오브젝트 속성 값 요소(306)는 관련된 오브젝트 속성 타입 요소(304)의 적합한 데이터 타입에 따른다. 예를 들어 도 3에서 도시되는 바와 같이, opyid "1"은, "색"에 대응하는 것임을 시스템이 알고 있는 Short Integer(2 바이트)의 오브젝트 속성 타입 요소(304), 및 "적색"에 대한 RGB(Red, Green, Blue) 인코딩인 0x00FF0000의 오브젝트 속성 값 요소(306)를 나타낸다. 특정 속성을 나타낼 때는, opyid가 사용된다. 예를 들어, OPL(300) 내의 경계선 속성이 요구되면, 그것의 opyid "2"에 의해 참조된다. OPL은 또한 속성으로서 다른 OPL을 포함하여, 더 복잡한 데이터 구조가 생성될 수 있다.
16비트의 통상적인 OPL에서, opyid 요소(302)는 일반적으로 11비트이다. 그러한 구성에서, OPL(300)은 11비트로 제약되기 때문에 2048개의 항목으로 제한된다. 출판계에서는, 오브젝트 및 속성의 수는 2048개의 항목을 쉽게 초과할 수 있다. 출판 문서는 복수의 페이지를 가질 수 있고, 각각의 페이지는 많은 오브젝트를 가질 수 있다. 각각의 오브젝트는 그것에 관련된 많은 속성을 가질 수 있다. 따라서, 어떤 경우에 있어서는 OPL 용량을 최대화하는 것이 요구된다. 이 때문에, 본 발명은 거의 무한한 용량을 가지는 개선된 OPL 타입인 OPL 배열을 포함할 수 있다. OPL 배열은 문서 내의 모든 오브젝트와 같은 많은 양의 데이터를 저장할 수 있다. OPL은 더 작은 양의 속성을 저장하는 데에도 사용될 수 있다.
도 4를 참조하여, 본 발명의 예시적인 실시예에 따른 데이터 구조(400)가 설명될 것이다. 데이터 구조(400)는 루트 OPL(402)을 포함할 수 있다. 루트 OPL(402)은 "MAX" 속성(402a), 불변 속성(402b) 및 OPL 배열 속성(402c)을 포함할 수 있다. max 속성(402a)은 OPL 배열 속성(402c)의 크기를 나타낼 수 있고, 데이터 구조(400)를 판독할 때 충분한 메모리를 할당하는 편리를 제공할 수 있지만 반드시 필요한 것은 아니다. 불변 속성(402b)은 OPL 배열 속성(402c) 내의 항목의 배열 인덱스가 일정하게 유지되는 특성을 정의할 수 있다. 다시 말하면, OPL 배열 속성(402c) 내의 항목의 배열 인덱스는 항목의 수명 내내 변하지 않을 것이다. 따라서, 새로운 항목은 현재 사용되지 않는 인덱스에만 추가될 수 있고, 항목을 삭제하면 인덱스 위치는 비어있게 된다.
OPL 배열 속성(402c)은 OPL 배열(404)을 참조할 수 있다. OPL 배열(404)은 OPL 배열 속성(402c) 내에 저장될 수 있거나 따로 저장될 수 있다. OPL 배열(404)은 속성, 기타 OPL 또는 기타 OPL 배열을 포함할 수 있다. 도 4에서 도시되는 바 와 같이, OPL 배열(404)은 하위 오브젝트 속성 리스트("subopl")(404a-404e)를 포함할 수 있고, 각각의 subopl(404a-404e)은 속성, OPL 또는 다른 OPL 배열일 수 있다. 각각의 subopl(404a-404e)은 배열 요소(406)를 참조할 수 있다. 각각의 배열 요소(406)는 임의의 속성, OPL 또는 다른 OPL 배열이 될 수 있다. 예를 들어, 배열 요소(406)는 ID 및 변수 길이 스트링을 포함하는 OPL이다.
단 하나의 OPL 배열(404)이 그것에 관련된 OPL 배열 요소(406)와 함께 도 4에서 도시되지만, 본 발명은 그러한 구조에 제한되지 않는다. 예를 들어, 데이터 구조(400)는 OPL 배열(404)과 같은 복수의 OPL을 포함할 수 있고, 각각은 관련된 OPL 배열 요소(406)를 갖는다. 그러한 경우에, 인덱스(402c)는 각각의 OPL 배열(404)을 참조할 수 있다.
subopl(404a-404e) 각각은 통상적인 OPL의 opyid(302)(도 3)와 마찬가지로 속성, 오브젝트 또는 기타 OPL을 참조한다. 그러나, 데이터 구조(400)에서, OPL 배열(404) 내의 항목은 특정 opyid를 부여 받지 않는다. 대신에, OPL 배열(404) 내의 각각의 subopl(404a-404e)에 대한 opyid는 "-1"로 설정될 수 있다. 그후에 OPL 배열(404) 내의 각각의 subopl(404a-404e)의 위치는 opyid로서 사용될 수 있다. 각각의 subopl(404a-404e)의 위치는 각각의 인덱스 위치 지시자(405a-405e)에 의해 도 4에서 나타난다. 예를 들어, OPL 배열(404) 내의 위치 "2"에서의 subopl과 같은 특정 subopl이 요구된다면, 인덱스 위치 지시자(405c)에서의 항목에 대응하는 subopl(404c)이 제공된다. subopl(404c)은 OPL 배열(404) 내의 인덱스 위치 2에 위치한다. 따라서, 데이터 구조(400)는 OPL 배열(404) 내의 그들 각각의 인덱스 위치에 기초하여 특정 OPL을 참조한다. 특정 subopl의 인덱스 위치가 그것의 opyid가 된다. 데이터 구조(400)는 각각의 요소에 대한 특정 opyid를 저장할 필요성을 없앰으로써, 통상적인 OPL의 결함을 극복한다. 항목의 수가 opyid의 범주에 의해 더이상 제한되지 않기 때문에 일반적인 32비트 시스템에서 데이터 구조(400)는 40억 개가 넘은 항목을 저장할 수 있다{위치 지시자(405a-405e)는 설명하기 위한 것이며 일반적으로 OPL 배열(404)에 제공되지 않음}.
도 4는 또한 OPL 배열(404) 내의 비어있는 슬롯이 앞으로의 참조를 위하여 어떻게 저장되는지 도시한다. 인덱스 위치(405b)에서의 비어있는 슬롯(404b)에 대해서, 위치 보유자(placeholder) 속성 "oplempty"는 인덱스 위치(405b)에서의 각각의 항목이 비어있다는 것을 나타낼 수 있다. oplempty는 하나의 배열 요소가 비어있으며, 이것을 건너 뛰어야 한다는 것을 나타낼 수 있다. 복수의 적합한 비어있는 배열 요소에 대해서, "oplskip=n"인 위치 보유자 속성이 사용될 수 있다. oplskip=n은 다음의 n개의 항목이 비어있다는 것을 나타낼 수 있다. 예를 들어 도 4에서 도시되는 바와 같이, OPL 배열(404) 내의 인덱스 위치(405d), 즉 인덱스 위치 "3-5"에 대응하는 항목(404d)은, OPL 배열(404) 내의 다음의 3개의 항목이 비어있고 이것을 건너 뛰어야 한다는 것을 나타내는 위치 보유자 속성 "oplskip=3"에 의해 채워진다.
데이터 파일은 오브젝트의 집합으로서 특징 지울 수 있다. 각각의 오브젝트는 OPL에 의해 정의될 수 있다. 각각의 OPL은 그것과 관련된 오브젝트 핸들(OH)을 가질 수 있다. OH는 오브젝트 OPL로의 인덱스일 수 있다. 따라서, OH는 오브젝트를 식별할 수 있고, 오브젝트의 수명 내내 변하지 않는다{도 4의 불변 필드(402b) 참조}. 파일의 구조는 각각의 오브젝트에 특정된 정보를 사용할 필요없이 각각의 오브젝트에 대한 OH를 참조함으로써 횡단될 수 있다. OH는 파일 저장 전반에 걸쳐 변하지 않는 상태를 유지할(불변) 수 있고, 그 결과 OH는 메모리 및/또는 파일 내의 오브젝트를 참조하는 데 유용하게 된다.
보통, OH는 단일 오브젝트에 할당되어야 하며, 어플리케이션 프로그램의 나중 버전이 파일을 저장했더라도 다시 사용되지 않아야 한다. 예를 들어, 추적 테이블은 프로그램에 의해 생성된 모든 오브젝트를 추적하기 위하여 어플리케이션 프로그램의 현재 버전에서 도입될 수 있다. 이전 버전이 파일을 로드하여 현재 버전의 오브젝트 중 하나를 삭제한다면, 현재 버전의 추적 테이블은 그 변경을 반영하는 업데이트를 실행하지 않을 것이다. 추가적으로, 삭제된 오브젝트에 대한 OH가 이전 버전에서 생성된 상이한 오브젝트에 대해 재사용된다면, 현재 버전의 추적 테이블은 재사용된 OH를 상이한 오브젝트로서 해석할 것이다. 본 발명은, 나중 버전이 파일을 저장했는지를 판정함으로써, OH를 재사용하는 것이 문제를 발생시키지 않을 때까지 OH를 재사용하는 것을 막을 수 있다. 그러면 나중 버전이 파일을 로드할 때, 삭제되었던 모든 오브젝트를 볼 수 있다. 추적 테이블은 그에 따라 조정될 수 있다. 본 발명은, 파일을 사용했던 최고 버전(파일 버전 워터마크에 의해 결정됨)이 그 파일을 저장하는 경우에도 OH가 재사용될 수 있게 할 수 있다. 본 발명은 최고 버전이 사용가능한 OH를 결정하게 할 수 있으며, 이전 버전에 의해 삭제되었던 오브젝트로의 모든 오래된 참조를 삭제함으로써 그 최고 버전이 재사용될 수 있게 할 수 있다.
메모리 구조를 OPL 또는 OPL 배열에 저장하기 위하여, 각각의 속성에 대한 디폴트 값 및 타입을 나타내는 "OPL 사전"이 정의될 수 있다. 사용되지 않은 속성은 어떤 공간도 차지하지 않기 때문에 사전의 수는 최소화될 수 있다. 따라서, 본 발명의 하나의 예시적인 실시예는 단일 사전을 사용할 수 있다. 그러한 실시예에서, 모든 공통적인 오브젝트는 각각의 동일한 항목에 대해서 동일한 opyid 또는 배열 인덱스 위치를 가질 수 있다. 다른 예시적인 실시예에서 (1)속성과 관련된 모든 파일 구조를 포함할 수 있는 파일 구조 사전(즉, OPL 트리의 루트); (2)출판 문서의 모든 페이지 오브젝트에 대한 속성을 포함할 수 있는 페이지 오브젝트 사전; 및 (3)관련된 텍스트를 가진 오브젝트를 보유하는 텍스트를 설명하기 위한 사전, 또는 출판 등에서 사용되는 색을 정의하기 위한 색 설명 사전을 포함할 수 있는 기타 구조 사전이 제공될 수 있다. 사전에서 속성이 정의될 때 그것은 임의의 오브젝트에 의해 참조될 수 있다. 따라서, 공통적인 오브젝트에 의해 사용되는 공통적인 속성은 동일한 사전으로부터 오기 때문에 동일하다.
OPL(및 OPL 배열)은 미래 버전으로부터의 알려지지 않은 속성 또는 정보를 보존하거나 또는 "라운드트립(round-trip)"하는 데 이로울 수 있다. 원본 OPL은 특정 버전에 의해 디스크로부터 메모리로 로드될 수 있다. 특정 버전에 의해 알려진 OPL의 속성 모두는 덮어 쓰기될 수 있다. 남아있는 속성(즉, 특정 버전에 알려지지 않은 속성)은 미래 버전에 의해 생성된 것이고, 파일 내에 조작되지 않을 상태를 유지할 수 있다. 따라서, 알려지지 않은 속성은 나중 버전에 의한 사용을 위하여 저장된 파일로 다시 전달될 수 있다. 알려지지 않은 속성은 로드될 때 무시될 수 있고 저장될 때 쉽게 보유될 수 있다.
OPL 또는 OPL 배열을 메모리 구조로서 사용하는 것은 메모리 구조가 파일 포맷과 분리되게 할 수 있다. 따라서, 어플리케이션 프로그램의 미래 버전은 상이한 파일 포맷에 관련된 문제없이 많은 새로운 기능을 포함할 수 있다. 예를 들어, 파일 포맷의 변화를 일으키지 않고 특정 프로세서 타입에 대해 더욱 효율적이도록, 구조가 메모리 내에서 이동될 수 있다. 파일에 저장되는 각각의 메모리 구조에 대해서 그러한 구조를 저장하기 위한 관련된 OPL이 있을 수 있다. OPL로부터 구조로의 맵핑이 일대일이어야 할 필요는 없다. 디스크 상의 논리적인 오브젝트는 성능 상의 이유로 인해 분리된 메모리 구조들이 될 수 있다. 예를 들어, 오브젝트 상의 하이퍼링크 속성은 역방향 검색 테이블 내에 저장될 수 있고, 어떤 다른 오브젝트가 임의의 주어진 오브젝트에 링크되는지를 결정하는 데 사용될 수 있다. 대안적으로, 복수의 디스크 상의 오브젝트는 메모리 내의 단일 구조로 결합될 수 있다.
이제 도 5 및 도 6를 참조하여, 어플리케이션 프로그램의 현재 버전, 이전 버전 및 나중 버전 간의 호환을 제공하기 위한 본 발명에 따른 방법이 설명될 것이다. 어플리케이션 프로그램의 현재 버전은 컴퓨터 시스템(200)(도 2) 상에서 현재 동작하는 어플리케이션 프로그램이다. 어플리케이션 프로그램의 이전 버전은 현재 버전 이전에 생성된 어플리케이션 프로그램의 임의의 버전이다. 어플리케이션 프로그램의 나중 버전은 현재 버전 이후에 생성된 어플리케이션 프로그램의 임의의 버전이다. 일반적으로, 어플리케이션 프로그램의 버전은 숫자에 의해 지정될 수 있다. 예를 들어, 어플리케이션 프로그램의 제1 버전은 버전 1.0으로서 지정될 수 있다. 어플리케이션 프로그램의 나중 버전은 더 높은 숫자로서 지정될 수 있다. 예를 들어, 제2 버전은 버전 2.0으로서 지정될 수 있다. 버전 1.0은 버전 2.0에 대한 이전 버전이다. 버전 2.0은 버전 1.0에 대한 나중 버전이다.
본 발명은 데이터 파일의 구조로서 전술한 OPL 배열 및 통상적인 OPL과 함께 사용될 수 있다. 그러나, 본 기술 분야에 숙련된 기술자에 의해 이해되는 바와 같이, 본 발명은 그러한 파일 구조로 제한되지 않는다.
본 발명의 예시적인 실시예에 따르면, 파일 버전 워터마크는 원본 데이터 파일의 다양한 속성을 나타내기 위하여 어플리케이션 프로그램의 원본 데이터 파일 내에 제공될 수 있다. 파일 버전 워터마크는 파일에 대한 정보를 제공하는 파일 헤더 내에 제공될 수 있다. 높은 버전 워터마크는 파일을 저장하는 데 사용되는 어플리케이션의 가장 높은 버전을 나타내기 위하여 제공될 수 있다. 최종 버전 워터마크는 파일을 저장하는 데 사용되는 어플리케이션 프로그램의 최종 버전을 나타내기 위하여 제공될 수 있다. 낮은 버전 워터마크는 파일을 저장하는 데 사용되는 어플리케이션 프로그램의 가장 낮은 버전을 나타내기 위하여 제공될 수 있다. 생성 버전 워터마크는 파일을 처음 생성한 어플리케이션 프로그램의 버전을 나타내기 위하여 제공될 수 있다. 오브젝트 버전 워터마크는 특정 오브젝트를 기록하는 어플리케이션 프로그램의 가장 높은 버전을 나타내기 위하여 각각의 오브젝트에 대한 속성으로서 제공될 수 있다. 각각의 파일 버전 워터마크는 파일에 행해진 변경, 추가 또는 삭제를 나타낼 수 있다. 파일을 로드할 때, 본 발명은 낮은 워터마크 버전 이후에 추가 또는 수정되었던 임의의 데이터 구조 및 속성을 결정할 수 있다. 추가되거나 수정된 항목은 임의의 버전과 호환되도록 교정될 수 있다.
동작에서, 데이터 파일 내의 높은 버전 워터마크는 어플리케이션 프로그램의 현재 버전과 비교될 수 있다. 그러한 비교에 의해서, 원본 데이터 파일이 어플리케이션 프로그램의 현재 버전, 이전 버전 또는 나중 버전에 대응하는지의 여부가 결정될 수 있다. 파일 전체가 어플리케이션 프로그램에 의해 저장될 수 있기 때문에, 파일 내의 오브젝트는 높은 버전 워터마크에 의해 식별되는 버전에 의해 생성되는 파일의 특성을 포함한다. 그 다음 어플리케이션 프로그램은 원본 데이터 파일이 현재 버전에 대응하는지, 이전 버전에 대응하는지, 또는 나중 버전에 대응하는지에 기초하여 이 원본 데이터 파일을 로드 및/또는 저장하는 방법을 결정할 수 있다. 원본 데이터 파일은 오브젝트 속성 리스트, 오브젝트 속성 배열, 또는 기타 파일 구조를 포함할 수 있다.
예를 들어, 어플리케이션 프로그램의 버전 2.0(나중 버전)은, 버전 2.0이 버전 1.0(이전 버전)과 상이하게 정보를 다루는 방법에 기초하여 정보를 변경할지의 여부를 판정할 수 있다. 예를 들어, 버전 1.0이 하이퍼링크를 위한 추적 테이블을 갖고 버전 2.0은 하이퍼링크 데이터를 오브젝트 자체 내에 놓는 경우, 버전 2.0은 버전 1.0에 의해 기록되는 파일을 로드할 때 그 정보를 변환해야 한다고 판정할 수 있다. 그러나, 버전 2.0이 파일을 기록한 가장 오래된 버전이었다면 버전 2.0은 그러한 변환이 필요하지 않다고 결정할 수 있다.
낮은 버전 워터마크 및 높은 버전 워터마크(및 오브젝트 워터마크)는 이전 마크를 초과하는 경우에 업데이트될 수 있다. 파일을 저장한 최종 버전은 저장시에 업데이트될 수 있다. 생성 버전 워터마크는 파일이 최초로 생성될 때 제공될 수 있으며 일반적으로 업데이트되지 않는다.
이제 도 5를 참조하여, 본 발명의 예시적인 실시예에 따른 데이터 파일을 로드하는 방법(500)이 설명될 것이다. 도 5는 어플리케이션 프로그램 내의 원본 데이터 파일을 로드하여 원본 데이터 파일이 현재 버전, 이전 버전 및 나중 버전과 호환되기 위한 방법(500)을 도시하는 흐름도이다. 방법(500)은 원본 데이터 파일 내의 높은 버전 워터마크, 낮은 버전 워터마크, 최종 버전 워터마크, 생성 버전 워터마크 및/또는 오브젝트 버전 워터마크를 제공하는 단계(510)를 포함할 수 있다. 단계(520)에서, 원본 데이터 파일 내의 높은 버전 워터마크가 결정된다. 방법은, 단계(530)에서 도시되는 바와 같이, 원본 데이터 파일 내의 낮은 버전 워터마크, 최종 버전 워터마크, 생성 버전 워터마크 및/또는 오브젝트의 오브젝트 버전 워터마크도 결정할 수 있다. 단계(540)에서, 높은 버전 워터마크는 높은 버전이 현재 버전보다 더 새로운 것인지를 결정하기 위하여 어플리케이션 프로그램의 현재 버전에 비교된다. 그러한 비교에 기초하여, 방법은 원본 데이터 파일을 로드하는 방법을 결정한다.
단계(540)의 비교가, 높은 버전 워터마크가 현재 버전보다 더 새로운 것이 아닌 어플리케이션 프로그램의 버전을 표현한다는 것을 나타낸다면, 원본 데이터 파일은 현재 버전에 대하여 어플리케이션 프로그램의 동일한 버전 또는 이전 버전에 대응한다. 그러한 경우에, 방법은 원본 데이터 파일이 변경없이 어플리케이션 프로그램으로 로드될 수 있는 단계(560)로 분기한다. 높은 버전 워터마크가 어플리케이션 프로그램의 이전 버전 또는 동일한 버전에 대응하기 때문에, 현재 버전은 원본 데이터 파일 내의 모든 정보를 판독 및 이해할 수 있다.
단계(540)의 비교가, 높은 버전 워터마크가 현재 버전보다 더 새로운 어플리케이션 프로그램의 버전을 표현한다는 것을 나타낸다면, 원본 데이터 파일은 현재 버전에 대하여 어플리케이션 프로그램의 나중 버전에 대응한다. 그러한 경우에, 방법은 원본 데이터 파일을 로드하는 단계(550)로 분기한다. 높은 버전 워터마크가 어플리케이션 프로그램의 나중 버전에 대응하기 때문에, 현재 버전은 원본 데이터 파일 내의 모든 정보를 판독 및 이해할 수는 없을 것이다. 따라서, 원본 데이터 파일은, 알려진 모든 정보를 로드하고 알려지지 않은 모든 정보를 건너 뜀으로써 단계(550)에서 어플리케이션 프로그램에 로드된다. OPL 또는 OPL 배열이 파일 구조로서 사용될 때, 오브젝트에 관련된 OPL의 알려지지 않은 속성은 알려지지 않은 모든 속성을 로드하고 그것을 파일이 저장될 때까지 메모리 블록 내에 저장함으로써 보유될 수 있다. 대안적으로, 프로그램은 디스크 상의 오브젝트에 관련된 원본 OPL의 위치를 추적할 수 있고 파일을 덮어 쓰기 전에 필요시 OPL의 알려지지 않은 속성을 다시 메모리 내로 판독할 수 있다.
단계(550 또는 560) 이후에, 방법은 원본 컴퓨터 파일 내의 최종 버전 워터마크가 현재 버전보다 더 오래된 어플리케이션 프로그램의 버전을 나타내는지를 판정하는 단계(570)로 진행한다. 단계(570)에서의 판정이 부정적이면, 방법은 종료한다. 단계(570)에서의 판정이 긍정적이면, 방법은 원본 데이터 파일 내의 오래된 정보에 기초한 새로운 또는 수정된 정보를 업데이트함으로써 원본 데이터 파일이 변경될 수 있는 단계(580)로 갈라진다. 오래된 정보는 임의의 변경없이 보유될 수 있다.
단계(570 및 580)는 최종 버전 워터마크에 기초하여 원본 데이터 파일을 변경하도록 동작한다. 최종 버전 워터마크는 원본 데이터 파일에 어떤 변경이 필요한지를 결정하기 위하여 높은 버전 워터마크로부터 추가적인 정보를 나타낼 수 있다. 예를 들어, 컴퓨터 어플리케이션 프로그램의 버전 2(높은 버전 워터마크)가 원본 데이터 파일을 기록했다고 가정하자. 버전 2는 버전 1로부터의 새로운 또는 수정된 속성을 포함할 수 있다. 그러나, 어플리케이션 프로그램의 버전 1이 파일을 기록한 최종 버전(최종 버전 워터마크)이었다면, 그것은 버전 2의 새로운 또는 수정된 속성에 대응하는 데이터의 일부를 변경할 수 있었을 것이다. 따라서, 버전 2 또는 나중 버전(현재 버전)이 원본 데이터 파일을 판독한다면, 파일을 기록한 최종 버전이 버전 1이었기 때문에 그 버전은 데이터 파일 내의 데이터를 변경할 필요가 있을 것이다(버전 1에 의해 판독되는 데이터는 버전 2 또는 나중 버전에 대응하도록 업데이트 될 필요가 있을 수 있다).
파일 버전 워터마크는 파일 전체 대신에, 또는 파일 전체 뿐만 아니라 개개의 오브젝트 단위로 제공될 수 있다. 그렇다면, 방법(500){및 이하에 논의되는 방법(600)}은 원본 데이터 파일 내의 오브젝트에 적용될 수 있다. 각각의 오브젝트에게 파일 버전 워터마크를 제공하는 것은 파일 내의 어느 오브젝트가 변환 또는 무시될 필요가 있는지를 결정함으로써 로드 및 저장하는 방법을 최적화할 수 있다. 추가적으로, 파일 버전 워터마크는 파일 전체 또는 오브젝트 전체 대신에, 또는 파일 전체 또는 오브젝트 전체 뿐만 아니라 개개의 속성 단위로 제공될 수 있다. 그렇다면, 방법(500){및 이하에서 논의되는 방법(600)}은 원본 데이터 파일 내의 속성에 적용될 수 있다. 각각의 속성에 대하여 파일 버전 워터마크를 제공하는 것은 파일 내의 어느 속성이 변환 또는 무시될 필요가 있는지를 결정함으로써 로드 및 저장하는 방법을 최적화할 수 있다.
더욱이, 어플리케이션 프로그램의 현재 버전은 오브젝트를 수정, 변경 또는 삭제한 어플리케이션 프로그램의 버전을 나타낼 수 있는 각각의 오브젝트와 관련된 현재 버전 워터마크를 가질 수 있다. 방법(500){및 이하에서 논의되는 방법(600)}에서, 특정 오브젝트에 대한 오브젝트 버전 워터마크는 현재 버전에 비교될 수 있고, 현재 버전은 현재 버전 내의 그 특정 오브젝트에 대한 현재 버전 워터마크에 의해 나타난다. 따라서, 현재 버전 워터마크가 오브젝트 버전 워터마크보다 더 새로운 것인 경우에만 오브젝트가 업데이트되면 되기 때문에, 본 발명은 원본 데이터 파일 내의 오브젝트가 업데이트될 필요가 있는지의 여부 판정을 최적화할 수 있다. 예를 들어, 원본 데이터 파일 내의 특정 오브젝트에 대한 오브젝트 버전 워터마크가 버전 1.0이 그 특정 오브젝트를 저장한 최종 버전이라는 것을 나타낸다고 가정하자. 현재 버전 2.0이 이 파일을 로드하면, 버전 2.0은 버전 1.0보다 더 새로운 것이기 때문에 특정 오브젝트에 기초한 현재 버전에서 정보를 업데이트할 것이다. 그러나, 현재 버전 워터마크가 현재 버전 내의 특정 오브젝트에게 제공되고, 현재 버전 워터마크는 이 특정 오브젝트가 버전 1.0 이후로 변경되지 않았다는 것을 나타내면, 이 특정 오브젝트가 버전 2.0에서 변경되지 않은 것이기 때문에, 현재 버전은 이 특정 오브젝트를 업데이트하지 않을 것이다. 따라서, 로드하는 방법은 불필요한 변환 단계를 제거함으로써 최적화될 수 있다.
이제 도 6을 참조하여, 본 발명에 따라 데이터 파일을 저장하기 위한 방법(600)의 예시적인 실시예가 설명될 것이다. 방법(600)은 수정된 데이터 파일이 저장될 수 있게 하여 현재 버전, 이전 버전 및 나중 버전과 호환되도록 한다. 원본 데이터 파일이 어플리케이션 프로그램의 현재 버전에 의해 수정된 후에, 수정된 원본 데이터 파일은 현재 버전, 이전 버전 및 나중 버전과 호환되도록 저장될 수 있다. 도 6은 방법(600)을 도시하는 흐름도이다. 방법(600)은 원본 데이터 파일 내의 높은 버전 워터마크, 낮은 버전 워터마크, 최종 버전 워터마크, 생성 버전 워터마크 및/또는 오브젝트 버전 워터마크를 제공하는 단계(605)를 포함할 수 있다. 단계(610)에서, 원본 데이터 파일 내의 높은 버전 워터마크가 결정된다. 단계(615)에서 도시되는 바와 같이, 방법(600)은 원본 데이터 파일의 낮은 버전 워터마크, 최종 버전 워터마크, 생성 버전 워터마크 및/또는 오브젝트 버전 워터마크도 결정할 수 있다. 단계(620)에서, 높은 버전 워터마크는 어플리케이션 프로그램의 현재 버전과 비교된다. 이 비교에 기초하여, 방법은 수정된 원본 데이터 파일을 저장하는 방법을 결정한다.
단계(620)의 비교가 높은 버전 워터마크가 현재 버전보다 더 오래된 어플리케이션 프로그램의 버전을 표현한다는 것을 나타낸다면, 원본 데이터 파일은 현재 버전에 대하여 어플리케이션 프로그램의 이전 버전에 대응한다. 그러한 경우에, 방법은 수정된 원본 데이터 파일을 어플리케이션 프로그램의 현재 버전의 포맷으로 저장하는 단계(625)로 분기한다. 높은 버전 워터마크가 어플리케이션 프로그램의 이전 버전에 대응하기 때문에, 어플리케이션 프로그램의 현재 버전은 수정된 원본 데이터 파일을 이전 버전 모두와 호환되는 포맷으로 저장할 수도 있다. 따라서, 방법은 수정된 원본 데이터 파일 내의 항목이 이전 버전(들)의 포맷으로 변환되어 저장되는 단계(630)로 진행한다. 그러므로, 수정된 원본 데이터 파일은 현재 버전과 이전 버전(들) 양자의 포맷으로 저장된다. 이전 버전으로부터의 오래된 정보는 파일이 어플리케이션 프로그램의 이전 버전, 현재 버전 및 미래 버전에 의해 사용될 수 있게 하는 단계(630)에서 재구성될 수 있다. 오래된 정보의 재구성이 너무 큰 태스크가 된다면, 미래 파일은 파일이 특정 버전 또는 미래 버전에 의해서만 판독될 수 있다는 것을 나타내는 명령을 파일에 삽입함으로써 종결될 수 있다. 단계(635)에서는, 원본 데이터 파일의 높은 버전 워터마크는 어플리케이션 프로그램의 현재 버전에 대응하도록 업데이트된다. 그 다음 방법은 파일을 저장하는 최종 버전도 미래의 사용을 위하여 업데이트되는 단계(665)로 진행한다.
단계(620)의 비교가 높은 버전 워터마크가 현재 버전보다 더 새로운 어플리케이션 프로그램의 버전을 표현하는 것을 나타낸다면, 원본 데이터 파일은 현재 버전에 대하여 어플리케이션 프로그램의 나중 버전에 대응한다. 그러한 경우에, 방법은 원본 데이터 파일이 획득되는 단계(640)로 분기한다. 그 다음 단계(645)에서, 원본 데이터 파일은 수정된 원본 데이터 파일로 덮어쓰기된다. 높은 버전 워터마크가 어플리케이션 프로그램의 나중 버전에 대응하기 때문에, 수정된 원본 데이터 파일은 현재 버전에 알려지지 않은 정보 또는 데이터를 포함할 수 있다{예를 들어, 도 5의 단계(580)를 참조}. 따라서, 단계(645)에서, 원본 데이터 파일의 알려진 데이터만 수정된 원본 데이터 파일의 데이터로 덮어쓰기된다. 알려지지 않은 속성 데이터는 변경되지 않는다. 이러한 방법에 의해서, 알려지지 않은 데이터는 그 데이터를 판독할 수 있는 어플리케이션 프로그램의 나중 버전을 위하여 사용 가능한 상태로 남는다. 도 5와 관련하여 전술된 바와 같이, 알려지지 않은 데이터는 어플리케이션 프로그램에 의해 보유될 수 있다. 그 다음 방법은 수정된 원본 데이터 파일 내의 항목이 이전 버전의 포맷으로 변경되어 저장되는 단계(630)로 진행된다. 따라서, 수정된 원본 데이터 파일은 현재 버전과 이전 버전(들) 양자의 포맷으로 저장된다.
다음으로, 방법은 낮은 버전 워터마크가 업데이트될 필요가 있는지를 판정한다. 단계(650)에서, 어플리케이션 프로그램의 현재 버전은 원본 데이터 파일의 낮은 버전 워터마크와 비교된다. 단계(650)에서 현재 버전이 낮은 버전 워터마크에 의해 표현되는 어플리케이션 프로그램의 버전보다 더 오래된 것이라고 판정되면, 방법은 낮은 버전 워터마크가 현재 버전에 대응되도록 업데이트되는 단계(655)로 분기한다. 그 다음 방법은 미래의 사용을 위하여 파일을 저장하는 최종 버전도 업데이트되는 단계(665)로 진행된다. 단계(650)에서 현재 버전이 낮은 버전 워터마크에 의해 표현되는 어플리케이션 프로그램의 버전과 동일하거나 또는 더 새로운 것이라고 판정되면, 방법은 최종 버전 워터마크가 현재 버전에 대응되도록 업데이트되는 단계(665)로 곧바로 분기한다.
단계(620)의 비교가 높은 버전 워터마크가 현재 버전과 동일한 어플리케이션 프로그램의 버전임을 나타낸다면, 원본 데이터 파일은 어플리케이션 프로그램의 현재 버전에 대응한다. 그러한 경우에, 방법은 원본 데이터 파일을 덮어쓰는 것에 의해 수정된 원본 데이터 파일이 저장되는 단계(660)로 갈라진다. 방법은 수정된 원본 데이터 파일 내의 항목이 이전 버전의 포맷(들)으로 변경되어 저장되는 단계(630)로 진행된다. 따라서, 수정된 원본 데이터 파일은 현재 버전과 이전 버전(들) 양자의 포맷에서 저장된다. 그 다음 방법은 파일을 저장하는 최종 버전이 미래의 사용을 위하여 업데이트되는 단계(665)로 진행한다.
단계(630)는 단계(620)로부터 취해지는 분기를 고려하지 않고 수행될 수 있다는 것을 유념한다. 따라서, 이전 버전에 대응하는 속성은 항상 파일에 기록될 수 있어서 그 파일은 이전 버전과 호환되는 것이다.
몇몇의 경우에, 방법(500 및 600)은 수정된 후에 파일을 저장하기 위하여 OPL 배열 요소의 위치를 추적하는 추가적인 단계(도시되지 않음)를 포함할 수 있다. 예를 들어, 데이터 파일의 버전은 4개의 요소를 갖는 테이블을 포함할 수 있다. 그러나, 데이터 파일의 수정된 버전은 단 3개의 요소를 가질 수 있다. 어플리케이션 프로그램이 원본 데이터 파일을 덮어쓰려고할 때, 디스크 버전은 본래 4개의 요소를 포함하지만, 메모리 버전은 단 3개의 요소만 포함한다. 추적 단계 없이, 어플리케이션 프로그램은 어느 요소가 삭제되었는지를 알 수 없다. 추적 단계에서, 어플리케이션 프로그램은 모든 테이블의 본래 인덱스를 추적한다. 테이블이 디스크로부터 판독될 때, 테이블 내의 각각의 요소의 위치를 나타내는 여분의 데이터 항목이 추가된다. 다시 말하면, 어플리케이션 프로그램은 어느 요소가 첫번째, 두번째였는지 등을 마킹한다. 따라서, 프로그램은 어느 요소가 존재하지 않기 때문에 삭제되었는지를 결정하여, 배열 요소 내에 존재할 수 있는 미래 버전 속성을 보호할 수 있다.
방법(500 및 600)에서, 어플리케이션 프로그램의 현재 버전은 원본 데이터 파일을 로드할 때 어떤 동작을 취해야 할지를 결정하는 임의의 워터마크를 사용할 수 있다. 높은 버전 워터마크의 사용은 전술되었다. 낮은 버전 워터마크는 어플리케이션 프로그램에 힌트를 줄 수 있고, 원본 데이터 파일 상에 필요한 변환의 유형을 제한한다. 전술한 예에 기초하면, 버전 1.0의 하이퍼링크 테이블이 존재하지 않는다고 알려지는 경우, 낮은 버전 워터마크는 파일이 그 버전에 의해 기록된 적이 없었다는 것을 나타내므로, 변경 처리는 하이퍼링크 테이블과 관련된 어떠한 것이라도 건너 뛸 수 있다. 최종 버전 워터마크는 파일을 기록하는 최종 버전에 의해 알려진 데이터 뿐만 아니라 알려지지는 않지만 파일 내에 보유되는 데이터도 나타낼 수 있다.
오브젝트 버전 워터마크는 특정 오브젝트에게 특정 정보를 제공할 수 있으며, 이것에 의해 특정 오브젝트가 그 정보에 기초하여 로드, 저장 또는 변환될 수 있다. 오브젝트 버전 워터마크는 특정 오브젝트에게 정보를 제공할 수 있고 특정 오브젝트가 포함하는 임의의 속성의 가장 높은 파일 버전을 나타낼 수 있다. 예를 들어, 버전 2.0에서 하이퍼링크 속성이 오브젝트 X에 추가되었고, 버전 3.0에서는 어떤 새로운 속성도 오브젝트 X에 추가되지 않았다고 가정하자. 오브젝트 X가 버전 2.0 또는 나중 버전에서 기록된 하이퍼링크를 포함한다면, 그것의 버전 워터마크는 버전 2.0으로 설정될 것이다. 오브젝트 X가 하이퍼링크를 포함하지 않거나(따라서 어떤 하이퍼링크 속성도 기록되지 않음) 버전 1.0에 의해 기록되었다면, 버전 워터마크는 버전 1.0으로 설정될 것이다. 이 정보는 각각의 개별 오브젝트에 대한 동작 및 그 오브젝트 내의 모든 속성을 이해할 수 있는 가장 높은 버전을 로드 및 저장하는 것을 더욱 최적화하는 데 사용될 수 있다. 예를 들어, 버전 3.0에 의해 기록되었고 하이퍼링크를 포함하지 않았던(따라서 버전 1.0 오브젝트 워터마크를 가지고 있음) 오브젝트 X는, 파일의 높은 버전 워터마크가 버전 3.0을 반영하더라도 존재하는 미래 버전 속성에 대한 염려 없이도 버전 1.0에 의해 기록 및 판독될 수 있다.
일반적으로, 파일을 저장하는 어플리케이션 프로그램의 최신 버전은 그 버전 또는 이전 버전으로부터의 임의의 정보를 다루는 방법을 결정하는 데 가장 적합하다. 최신 버전은 파일 내의 모든 것을 판독 및 이해할 수 있다. 어플리케이션 프로그램의 최신 버전은 어느 정보를 유지, 변환 또는 폐기할지를 결정한다. 따라서, 파일을 기록하는 가장 높은 버전은 정보가 폐기될지 또는 변경될지를 결정한다. 더 낮은 버전 모두는 임의의 알려지지 않은 정보를 단순히 전달할 수 있다.
마지막으로, 도 5 및 도 6에서 도시되는 방법(500 및 600)의 모든 단계가 본 발명에 대해 동작가능하게 될 필요는 없다. 또한, 어떤 단계는 도시된 것과는 다른 순서로 수행될 수 있다.
도 7 내지 9를 참조하여, 본 발명에 따른 방법(500 및 600)의 특정 실시예가 설명될 것이다. 도 7 내지 9의 각각에서, 방법(500 또는 600)은 최종 버전 워터마크가 어플리케이션 프로그램의 현재 버전보다 작다고 판정했다(즉, 원본 데이터 파일을 저장하는 어플리케이션 프로그램의 최종 버전이 현재 버전에 대하여 어플리케이션 프로그램의 이전 버전에 대응함){도 5의 단계(595)를 참조}. 또한, 방법(500 또는 600)이 높은 버전 워터마크가 어플리케이션 프로그램의 현재 버전보다 작다고 판정한 경우, 도 7 내지 9에 대하여 이하에 설명되는 실시예도 동작가능하다.
도 7은 본 발명에 따라 원본 데이터 파일을 로드 및 저장하기 위한 방법(700)을 도시하는 흐름도이며, 여기서 현재 버전은 이전 버전에서 포함되지 않은 추가적인 오브젝트 속성을 갖는다. 방법(700)의 단계(710)에서, 새로운 속성에 대한 디폴트 값은 어플리케이션 프로그램의 현재 버전에 대한 OPL에서 정의된다. 처리는 원본 데이터 파일이 변경없이 로드되는 단계(725)로 진행된다. 원본 데이터 파일이 수정된 후에 단계(730)에서 저장된다. 따라서, 새로운 속성은 어플리케이션 프로그램의 현재 버전 및 미래 버전에서의 사용을 위하여 저장된다. 이전 버전은 새로운 속성을 단순히 무시할 것이다. 단계(740)에서, 높은 버전 워터마크는 현재 버전으로 업데이트된다.
도 8은 본 발명에 따른 원본 데이터 파일을 로드 및 저장하기 위한 방법(800)을 도시하는 흐름도이며, 여기서 현재 버전은 이전 버전에서 사용되었던 오브젝트 속성을 삭제하였다. 단계(820)에서, 원본 데이터 파일이 현재 버전에서 로드될 때 삭제된 속성은 무시된다. 원본 데이터 파일의 수정된 버전이 단계(830)에서 저장될 때, 파일은 더 오래된 버전에 사용가능한 삭제된 속성과 함께 저장된다. 현재 버전이 삭제된 속성을 사용하지는 않았지만, 삭제된 속성은 이전의 버전에 의한 사용을 위하여 저장된 파일로 되돌려진다. 원본 데이터 파일 내에 삭제된 속성을 남김으로써, 즉 파일로부터 속성이 삭제된 것을 기록하지 않음으로써 삭제된 속성은 저장된 파일로 되돌려질 수 있다. 대안적으로, 삭제된 속성을 저장된 파일로 (원본 데이터 파일로부터) 다시 전달함으로써 삭제된 속성은 저장된 파일로 되돌려질 수 있다. 삭제된 속성은 현재 버전에 알려지기 때문에, 삭제된 속성이 파일로 되돌려질 수 있게 위하여 삭제된 속성의 값이 다른 속성 값으로부터 파생될 수 있거나 삭제된 속성을 표시하는 디폴트 값이 생성될 수 있다. 단계(840)에서, 높은 버전 워터마크는 현재 버전으로 업데이트될 수 있다.
예를 들어, 이전 버전이 오브젝트 상에서 물방울 그림자 속성을 포함했다고 가정하자. 현재 버전은 더이상 이 속성을 지원하지 않을 수 있다. 즉, 물방울 그림자 속성은 현재 버전으로부터 삭제되었다는 것이다. 어플리케이션 프로그램의 더 새로운 버전은 물방울 그림자 속성이 삭제되었다는 것을 인식한다. 그러나, 물방울 그림자 속성은 현재 버전에 의해 여전히 파일에 기록될 수 있다. 단계(820)에서, 원본 데이터 파일은 로드될 수 있고, 삭제된 물방울 그림자 속성은 무시될 수 있다. 원본 데이터 파일의 수정된 버전이 단계(830)에서 저장될 때, 파일은 더 오래된 버전에 사용가능한 삭제된 물방울 그림자 속성과 함께 저장될 수 있다. 현재 버전이 삭제된 물방울 그림자 속성을 사용하지는 않았지만, 삭제된 물방울 그림자 속성은 이전 버전에 의한 사용을 위하여 저장된 파일로 되돌려질 수 있다. 물방울 그림자 속성 값은 다른 속성의 값으로부터 결정될 수 있거나 디폴트 값이 사용될 수 있다. 단계(840)에서, 높은 버전 워터마크는 현재 버전으로 업데이트될 수 있다.
도 9는 본 발명에 따라 원본 데이터 파일을 로드 및 저장하기 위한 방법(900)을 도시하는 흐름도이며, 여기서 현재 버전은 이전 버전의 오래된 오브젝트 속성을 수정하였다. 오래된 속성을 수정된 속성으로 대체하지 않고, 수정된 속성을 나타내는 새로운 속성이 현재 버전에서 제공된다. 방법(900)의 단계(910)에서, 새로운 속성의 디폴트 값은 어플리케이션 프로그램의 현재 버전의 OPL에서 정의된다. 오래된 속성은 변하지 않은 상태로 남겨진다. 단계(920)에서, 원본 데이터 파일이 현재 버전으로 로드되고, 오래된 속성은 새로운(수정된) 속성으로 변경된다. 원본 데이터 파일이 수정된 후에, 단계(930)에서 저장된다. 단계(930)에서, 새로운 속성은 오래된 속성에 관계없이 저장된다. 추가적으로 단계(930)에서, 새로운 속성은 오래된 속성으로 변경되고, 이전 버전에 의한 사용을 위하여 저장된다. 단계(940)에서, 높은 버전 워터마크는 현재 버전으로 업데이트된다.
예를 들어, 어플리케이션 프로그램의 이전 버전이 오브젝트의 색을 정의하는 RGB(Red, Green, Blue) 색 모델을 사용했다고 가정하자. 어플리케이션 프로그램의 현재 버전은 오브젝트의 색을 전문가용 프린터에 의해 사용되는 CMYK 색 모델(Cyan, Magenta, Yellow, Black)에서 정의할 수 있게 하는 새로운 속성을 포함할 수 있다. 새로운 CMYK 색 속성은 오래된 RGB 색 속성에 기초할 수 있고, 각각의 RGB 값에 대해 동등한 CMYK 값이 결정될 수 있다. 새로운 opyid는 적합한 OPL 사전에 추가될 수 있다. 예를 들어, 적합한 사전은 페이지 오브젝트에 대한 페이지 오브젝트 사전, 다른 존재하는 사전 또는 새로운 사전일 수 있다. 단계(910)에서, 새로운 CMYK 색 속성에 대한 디폴트 값은 OPL 사전에서 정의될 수 있다. 오래된 RGB 속성은 변하지 않은 상태를 유지한다. 단계(920)에서, 원본 데이터 파일은 현재 버전으로 로드될 수 있고, 새로운 CMYK 색 속성이 오브젝트의 오래된 RGB 속성에 기초하여 업데이트될 수 있다. 원본 데이터 파일은 수정된 후에 단계(930)에서 저장될 수 있다. 단계(930)에서, 새로운 CMYK 색 속성은 원본 데이터 파일로부터의 오래된 RGB 속성에 관계없이 저장될 수 있다. 새로운 CMYK 속성은 대응하는 오래된 RGB 속성으로 변경되어 파일에 저장될 수 있다. 따라서, 새로운 CMYK 색 속성은 어플리케이션 프로그램의 현재 버전 및 미래 버전과의 사용을 위하여 저장될 수 있다. 이전 버전은 새로운 CMYK 색 속성을 단순히 무시할 것이다. 단계(940)에서, 높은 버전 워터마크는 현재 버전으로 업데이트될 수 있다.
본 발명의 방법은 데이터 파일에 저장되는 어플리케이션 프로그램의 두 버전 간의 불일치도 해결할 수 있다. 전술한 CMYK-RGB 예에서, 나중 버전은 새로운 CMYK 색 속성을 상응하는 RGB 속성으로 변환시킬 것이기 때문에 이전 버전은 파일을 판독할 수 있다. 그러나, 파일을 기록하는 최종 버전이 파일을 기록하는 현재 버전과 높은 버전 양자보다 오래된 것일 때는 불일치가 발생할 수 있다. 현재 버전은 파일을 기록하는 높은 버전보다 나중 버전 또는 동일한 버전이 될 수 있다. 최종 버전이 아닌 파일을 기록하는 높은 버전이 새로운 CMYK 색 속성을 인식한다면, 새로운 CMYK 색 속성 값 뿐만 아니라 대응하는 RGB 색 속성 값도 데이터 파일로 기록할 것이다. 대안적으로, 파일을 기록하는 최종 버전이 RGB 색 속성만 인식한다면, RGB 색 속성 값을 데이터 파일로 기록할 것이다. 데이터 파일이 새로운 CMYK 색 속성을 지원하는 현재 버전으로 로드될 때, 데이터 파일 내의 CMYK 색 속성은 오래된 정보에 대응한다. 높은 버전이 CMYK 색 속성 값을 파일에 기록하고 최종 버전이 RGB 색 속성 값을 파일에 기록하기 때문에 색 속성 정보의 두가지 버전이 데이터 파일 내에 존재한다. 파일을 기록하는 최종 버전이 RGB 값을 업데이트 시켰지만, 알려지지 않은 CMYK 속성의 값을 보유했기 때문에 RGB 및 CMYK 값은 일치하지 않는다. 파일이 현재 버전으로 로드될 때, 파일을 기록하는 최종 버전이 결정될 수 있다{도 5의 단계(570) 참조}. 그러한 정보에 기초하여, CMYK 색 속성 값이 구식이고, RGB 색 속성 값이 로드되어 업데이트된 CMYK 색 속성 값으로 변경되어야 한다고 판정될 수 있다.
오브젝트는 속성의 집합이다. 따라서, 어플리케이션 프로그램의 상이한 버전 내의 오브젝트로의 변경은 그 오브젝트에 대응하는 속성 내의 변경에 의해 반영될 수 있다. 오브젝트를 포함하는 데이터 파일이 로드 또는 저장될 때, 방법(700, 800 및 900)의 단계는 오브젝트의 각각의 속성에 대해 반복될 수 있다.
본 발명의 실시예는 워싱턴주 레드몬드 소재의 마이크로소프트® 사로부터 입수 가능한 마이크로소프트® 퍼블리셔로 알려진 전자 출판 시스템의 일부로서 사용될 수 있다. 이 출판 시스템은 사용자가 문서를 편집하고 그래픽 데이터, 텍스트 데이터, 스프레드시트 데이터 또는 기타 유형의 데이터를 포함하는 다양한 오브젝트를 삽입할 수 있게 할 수 있다. 더욱이, 이 시스템은 사용자가 오브젝트의 속성을 수정할 수 있게 할 수 있다. 상기 시스템은 기준 값(디폴트 값)으로 설정된 속성을 미리 정의했던 다수의 미리 정해진 오브젝트 타입을 가질 수 있다. 각각의 오브젝트 타입은 서로 다른 속성 및/또는 속성 값 세트를 가질 수 있다. 각각의 오브젝트는 자신의 오브젝트 타입의 인스턴스가 될 수 있다. 이와 같이, 본래 형태에서의 오브젝트의 설정은 즉시 획득가능할 수 있다. 실시예가 전자 출판 시스템에 관련하여 설명되었지만, 본 기술 분야에 숙련된 기술자는 여기에 설명된 기술이 거의 무한히 많은 다른 유형의 시스템에 적용될 수 있다는 것을 인식할 것이다.
본 발명은 전술된 처리 기능을 수행하는 컴퓨터 하드웨어 및 소프트웨어와 함께 사용될 수 있다. 본 기술 분야에 숙련된 기술자에 의해 알려진 바와 같이, 여기에 설명된 시스템, 방법 및 프로시저는 프로그램 가능한 컴퓨터, 컴퓨터 실행가능한 소프트웨어 또는 디지털 회로 내에서 구현될 수 있다. 소프트웨어는 컴퓨터 판독가능 매체 상에서 저장될 수 있다. 예를 들어, 컴퓨터 판독가능 매체는 플로피 디스크, RAM, ROM, 하드 디스크, 분리형 매체, 플래시 메모리, 메모리 스틱, 광 매체, 광자기 매체, CD-ROM 등을 포함할 수 있다. 디지털 회로는 통합 회로, 게이트 배열, 빌딩 블록 논리, 필드 프로그램 가능한 게이트 배열(FPGA) 등을 포함할 수 있다.
본 발명의 구체적인 실시예가 상세하게 전술되었지만, 이 설명은 단지 예시를 위한 것이다. 전술된 것 외에, 개시된 예시적인 실시예의 양태의 다양한 수정 및 그 양태에 대응하는 동등한 단계가, 본 기술 분야에 숙련된 기술자에 의해 다음의 청구항에서 정의되는 본 발명의 취지 및 범주로부터 벗어나지 않고 만들어질 수 있으며, 본 발명의 범주는 그러한 수정 및 동등한 구조를 포함하기 위하여 가장 넓은 해석을 허용한다.

Claims (61)

  1. 어플리케이션 프로그램의 현재 버전 및 나중 버전과 호환가능하도록 원본 데이터 파일을 판독하는 방법에 있어서,
    상기 원본 데이터 파일 내에 높은 버전 워터마크를 제공하는 단계 - 상기 높은 버전 워터마크는 상기 파일을 저장하는 데 사용된 상기 어플리케이션 프로그램의 가장 높은 버전을 나타냄 -;
    상기 원본 데이터 파일이 상기 어플리케이션 프로그램의 상기 나중 버전에 대응하는지를 판정하기 위하여, 상기 높은 버전 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전과 비교하는 단계; 및
    상기 원본 데이터 파일을 상기 현재 버전으로 로드하는 단계
    를 포함하고,
    상기 비교 단계에서 상기 원본 데이터 파일이 상기 나중 버전에 대응한다고 판정되는 경우, 상기 로드 단계는,
    상기 원본 데이터 파일 내의 알려지지 않은 정보를 무시하는 단계; 및
    상기 원본 데이터 파일로부터의 알려진 정보를 상기 현재 버전으로 로드하는 단계를 포함하는 원본 데이터 파일 판독 방법.
  2. 제1항에 있어서,
    상기 원본 데이터 파일은 오브젝트 속성 리스트를 포함하는 원본 데이터 파일 판독 방법.
  3. 제2항에 있어서,
    상기 오브젝트 속성 리스트는 오브젝트 속성 리스트 배열을 포함하는 원본 데이터 파일 판독 방법.
  4. 제3항에 있어서,
    상기 오브젝트 속성 리스트 배열 내에서 오브젝트의 위치를 추적하는 단계; 및
    상기 추적 단계에서 추적된 상기 오브젝트의 위치에 기초하여 상기 오브젝트 속성 리스트 배열을 업데이트하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  5. 제1항에 있어서,
    상기 알려진 정보 및 상기 알려지지 않은 정보는 각각 오브젝트 속성 리스트의 속성을 포함하는 원본 데이터 파일 판독 방법.
  6. 제1항에 있어서,
    상기 원본 데이터 파일의 수정된 버전을 저장하는 단계를 더 포함하고,
    상기 저장 단계는,
    상기 원본 데이터 파일로부터의 상기 알려진 정보를 상기 수정된 버전으로부터의 정보로 덮어쓰는 단계; 및
    상기 나중 버전에 사용가능한 상기 알려지지 않은 정보를 유지하기 위하여 상기 원본 데이터 파일로부터의 상기 알려지지 않은 정보를 보유하는 단계
    를 포함하는 원본 데이터 파일 판독 방법.
  7. 제1항에 있어서,
    상기 원본 데이터 파일 내에 최종 버전 워터마크를 제공하는 단계 - 상기 최종 버전 워터마크는 상기 파일을 저장하는 데 사용된 상기 어플리케이션 프로그램의 최종 버전을 나타냄 -; 및
    상기 최종 버전 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전과 비교함으로써 상기 원본 데이터 파일의 특성을 결정하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  8. 제7항에 있어서,
    상기 결정 단계에서, 상기 최종 버전 워터마크가 상기 어플리케이션 프로그램의 상기 현재 버전보다 이전인 버전에 대응한다고 판정될 때, 상기 원본 데이터 파일 내의 정보에 기초하여 상기 어플리케이션 프로그램의 상기 현재 버전 내의 정보를 변환하는 단계를 더 포함하는 원본 데이터 파일 판독 방법.
  9. 제1항에 있어서,
    상기 원본 데이터 파일 내에 낮은 버전 워터마크를 제공하는 단계 - 상기 낮은 버전 워터마크가 상기 파일을 저장하는 데 사용된 상기 어플리케이션 프로그램의 가장 낮은 버전을 나타냄 -; 및
    상기 낮은 버전 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전과 비교함으로써 상기 원본 데이터 파일의 특성을 결정하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  10. 제1항에 있어서,
    상기 원본 데이터 파일 내에 오브젝트에 대한 오브젝트 버전 워터마크를 제공하는 단계 - 상기 오브젝트 버전 워터마크는 상기 오브젝트 내의 모든 속성을 해석할 수 있는 상기 어플리케이션 프로그램의 가장 낮은 버전을 나타냄 -; 및
    상기 오브젝트 버전 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전에서의 오브젝트 버전과 비교함으로써 상기 원본 데이터 파일의 특성을 결정하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  11. 제1항의 원본 데이터 파일 판독 방법을 수행하기 위한 컴퓨터 실행가능한 명령어를 갖는 컴퓨터 판독가능 기록 매체.
  12. 어플리케이션 프로그램의 현재 버전 및 이전 버전과 호환가능하도록 원본 데이터 파일을 판독하는 방법에 있어서,
    상기 원본 데이터 파일 내에 높은 버전 워터마크를 제공하는 단계 - 상기 높은 버전 워터마크는 상기 파일을 저장하는 데 사용된 상기 어플리케이션 프로그램의 가장 높은 버전을 나타냄 -;
    상기 원본 데이터 파일이 상기 어플리케이션 프로그램의 상기 이전 버전에 대응하는지를 판정하기 위하여, 상기 높은 버전 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전과 비교하는 단계; 및
    상기 비교 단계에서 상기 원본 데이터 파일이 상기 이전 버전에 대응한다고 판정될 때, 상기 원본 데이터 파일을 상기 현재 버전으로 변경하지 않고 로드하는 단계를 포함하는 원본 데이터 파일 판독 방법.
  13. 제12항에 있어서,
    상기 원본 데이터 파일 내에 최종 버전 워터마크를 제공하는 단계 - 상기 최종 버전 워터마크는 상기 파일을 저장하는 데 사용된 상기 어플리케이션 프로그램의 최종 버전을 나타냄 -; 및
    상기 최종 버전 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전과 비교함으로써 상기 원본 데이터 파일의 특성을 결정하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  14. 제13항에 있어서,
    상기 결정 단계에서, 상기 최종 버전 워터마크가 상기 어플리케이션 프로그램의 상기 현재 버전보다 이전인 버전에 대응한다고 판정될 때, 상기 원본 데이터 파일 내의 정보에 기초하여 상기 어플리케이션 프로그램의 상기 현재 버전 내의 정보를 변환하는 단계를 더 포함하는 원본 데이터 파일 판독 방법.
  15. 제12항에 있어서,
    상기 원본 데이터 파일은 오브젝트 속성 리스트를 포함하는 원본 데이터 파일 판독 방법.
  16. 제15항에 있어서,
    상기 오브젝트 속성 리스트는 오브젝트 속성 리스트 배열을 포함하는 원본 데이터 파일 판독 방법.
  17. 제16항에 있어서,
    상기 오브젝트 속성 리스트 배열 내에서 오브젝트의 위치를 추적하는 단계; 및
    상기 추적 단계에서 추적된 상기 오브젝트의 위치에 기초하여 상기 오브젝트 속성 리스트 배열을 업데이트하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  18. 제14항에 있어서,
    상기 변환 단계에서 변환된 정보를 저장하는 단계; 및
    상기 원본 데이터 파일로부터의 변경되지 않은 오래된 정보를 저장하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  19. 제14항에 있어서,
    상기 변환 단계에서 변환된 정보를 저장하는 단계;
    상기 원본 데이터 파일로부터의 오래된 정보에 대응하는 정보를 생성하는 단계; 및
    상기 생성 단계에서 생성된 정보를 저장하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  20. 제12항의 원본 데이터 파일 판독 방법을 수행하기 위한 컴퓨터 실행가능한 명령어를 갖는 컴퓨터 판독가능 기록 매체.
  21. 어플리케이션 프로그램의 현재 버전 및 이전 버전과 호환가능하도록 원본 데이터 파일을 판독하는 방법에 있어서,
    원본 데이터 파일 내에 최종 버전 워터마크를 제공하는 단계 - 상기 최종 버전 워터마크는 상기 파일을 저장하는 데 사용된 상기 어플리케이션 프로그램의 최종 버전을 나타냄 -;
    상기 원본 데이터 파일이 상기 어플리케이션 프로그램의 이전 버전에 대응하는지를 판정하기 위하여, 상기 최종 버전 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전과 비교하는 단계; 및
    상기 원본 데이터 파일을 상기 현재 버전으로 로드하는 단계
    를 포함하고,
    상기 비교 단계에서 상기 원본 데이터 파일이 상기 이전 버전에 대응한다고 판정되는 경우, 상기 로드 단계는,
    상기 이전 버전이 상기 현재 버전으로부터 삭제되었던 삭제된 항목을 포함하는지를 판정하는 단계;
    상기 판정 단계에서 상기 이전 버전이 상기 삭제된 항목을 포함한다고 판정되는 경우, 상기 삭제된 항목에 대응하는 상기 원본 데이터 파일 내의 오래된 정보를 무시하는 단계; 및
    상기 삭제된 항목 외의 다른 항목에 대응하는 상기 원본 데이터 파일로부터의 정보를 로드하는 단계를 포함하는 원본 데이터 파일 판독 방법.
  22. 제21항에 있어서,
    상기 삭제된 항목은 오브젝트 속성을 포함하는 원본 데이터 파일 판독 방법.
  23. 제21항에 있어서,
    상기 삭제된 항목은 오브젝트를 포함하는 원본 데이터 파일 판독 방법.
  24. 제21항에 있어서,
    상기 원본 데이터 파일의 수정된 버전을 저장하는 단계; 및
    상기 원본 데이터 파일의 상기 삭제된 항목에 대응하는 정보를 저장하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  25. 제21항에 있어서,
    상기 원본 데이터 파일의 수정된 버전을 저장하는 단계;
    상기 원본 데이터 파일로부터의 상기 삭제된 항목에 대응하는 정보를 생성하는 단계; 및
    상기 생성 단계에서 생성된 정보를 저장하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  26. 제21항의 원본 데이터 파일 판독 방법을 수행하기 위한 컴퓨터 실행가능한 명령어를 갖는 컴퓨터 판독가능 기록 매체.
  27. 어플리케이션 프로그램의 현재 버전 및 이전 버전과 호환가능하도록 원본 데이터 파일을 판독하는 방법에 있어서,
    상기 원본 데이터 파일 내에 최종 버전 워터마크를 제공하는 단계 - 상기 최종 버전 워터마크는 상기 파일을 저장하는 데 사용된 상기 어플리케이션 프로그램의 최종 버전을 나타냄 -;
    상기 원본 데이터 파일이 상기 어플리케이션 프로그램의 이전 버전에 대응하는지를 판정하기 위하여, 상기 최종 버전 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전과 비교하는 단계; 및
    상기 원본 데이터 파일을 상기 현재 버전으로 로드하는 단계
    를 포함하고,
    상기 비교 단계에서 상기 원본 데이터 파일이 상기 이전 버전에 대응한다고 판정되는 경우, 상기 로드 단계는,
    상기 현재 버전이 상기 원본 데이터 파일 내의 오래된 정보에 관련된 수정된 항목을 포함하는지를 판정하는 단계;
    상기 판정 단계에서 상기 현재 버전이 상기 원본 데이터 파일 내의 상기 오래된 정보에 관련된 수정된 항목을 포함한다고 판정되는 경우, 상기 원본 데이터 파일로부터의 상기 오래된 정보를 상기 수정된 항목에 대응하는 정보로 변환하는 단계; 및
    상기 변환 단계에서 변환된 정보를 상기 현재 버전으로 로드하는 단계를 포함하는 원본 데이터 파일 판독 방법.
  28. 제27항에 있어서,
    상기 수정된 항목은 오브젝트 속성을 포함하는 원본 데이터 파일 판독 방법.
  29. 제27항에 있어서,
    상기 수정된 항목은 오브젝트를 포함하는 원본 데이터 파일 판독 방법.
  30. 제27항에 있어서,
    상기 원본 데이터 파일의 수정된 버전을 저장하는 단계를 더 포함하고,
    상기 저장 단계는,
    상기 수정된 항목에 대응하는 정보를 저장하는 단계;
    제2 변환 단계에서, 상기 수정된 항목에 대응하는 정보를 상기 오래된 정보에 대응하고 상기 이전 버전에 의해 판독가능한 정보로 변환하는 단계; 및
    상기 제2 변환 단계로부터의 상기 변환된 정보를 저장하는 단계
    를 포함하는 원본 데이터 파일 판독 방법.
  31. 제27항의 원본 데이터 파일 판독 방법을 수행하기 위한 컴퓨터 실행가능한 명령어를 갖는 컴퓨터 판독가능 기록 매체.
  32. 어플리케이션 프로그램의 현재 버전, 이전 버전 및 나중 버전과 호환가능하도록 원본 데이터 파일을 판독하는 방법에 있어서,
    상기 원본 데이터 파일 내에 높은 버전 워터마크를 제공하는 단계 - 상기 높은 버전 워터마크는 상기 파일을 저장하는 데 사용된 상기 어플리케이션 프로그램의 가장 높은 버전을 나타냄 -;
    상기 원본 데이터 파일에 최종 버전 워터마크를 제공하는 단계 - 상기 최종 버전 워터마크는 상기 파일을 저장하는 데 사용된 상기 어플리케이션 프로그램의 최종 버전을 나타냄 -;
    상기 원본 데이터 파일이 상기 어플리케이션 프로그램의 상기 이전 버전, 상기 현재 버전 및 상기 나중 버전 중 하나에 대응하는 속성을 포함하는지를 판정하기 위하여, 상기 높은 버전 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전과 비교하는 단계;
    상기 원본 데이터 파일이 상기 어플리케이션 프로그램의 상기 이전 버전, 상기 현재 버전 및 상기 나중 버전 중 하나에 대응하는 추가적인 속성을 포함하는지를 판정하기 위하여, 상기 최종 버전 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전과 비교하는 단계; 및
    상기 원본 데이터 파일을 현재 버전으로 로드하는 단계
    를 포함하고,
    상기 비교 단계에서 상기 원본 데이터 파일이 상기 어플리케이션 프로그램의 상이한 버전들에 대응하는 속성들을 포함한다고 판정되는 경우, 상기 로드 단계는,
    상기 원본 데이터 파일의 어느 속성이 현재의 속성이고, 상기 원본 데이터 파일의 어느 속성이 구식의 속성인지를 결정하는 단계;
    상기 결정 단계에서 결정된 상기 현재의 속성에 기초하여 상기 원본 데이터 파일을 상기 현재 버전으로 로드하는 단계; 및
    상기 결정 단계에서 결정된 상기 구식의 속성을 무시하는 단계를 포함하는 원본 데이터 파일 판독 방법.
  33. 어플리케이션 프로그램의 현재 버전, 이전 버전 및 나중 버전과 호환가능하도록 원본 데이터 파일을 판독하는 방법에 있어서,
    상기 원본 데이터 파일 내에 최종 버전 워터마크를 제공하는 단계 - 상기 최종 버전 워터마크는 상기 파일을 저장하는 데 사용된 상기 어플리케이션 프로그램의 최종 버전을 나타냄 -;
    상기 원본 데이터 파일을 저장하는 데 사용된 상기 최종 버전이 상기 어플리케이션 프로그램의 이전 버전에 대응하는지를 판정하기 위하여, 상기 최종 버전 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전과 비교하는 단계;
    상기 비교 단계에서 상기 원본 데이터 파일을 저장하는 데 사용된 상기 최종 버전이 이전 버전에 대응하는 것으로 판정되는 경우, 상기 원본 데이터 파일 내의 정보에 기초하여 상기 어플리케이션 프로그램의 상기 현재 버전 내의 정보를 변환하는 단계; 및
    상기 변환 단계에서 변환된 정보를 로드하는 단계
    를 포함하는 원본 데이터 파일 판독 방법.
  34. 어플리케이션 프로그램의 현재 버전 및 나중 버전과 호환가능하도록, 오브젝트 속성 리스트를 포함하는 원본 데이터 파일을 판독하는 방법에 있어서,
    상기 원본 데이터 파일의 상기 오브젝트 속성 리스트 내에 오브젝트에 대한 오브젝트 버전 워터마크를 제공하는 단계 - 상기 오브젝트 버전 워터마크는 상기 오브젝트에 포함된 모든 속성을 해석할 수 있는 상기 어플리케이션 프로그램의 가장 낮은 버전을 나타냄 -;
    상기 오브젝트가 상기 어플리케이션 프로그램의 상기 나중 버전에 대응하는지를 판정하기 위하여, 상기 오브젝트의 상기 오브젝트 버전 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전에서의 오브젝트 버전과 비교하는 단계; 및
    상기 원본 데이터 파일을 상기 현재 버전으로 로드하는 단계
    를 포함하고,
    상기 비교 단계에서 상기 오브젝트가 상기 나중 버전에 대응한다고 판정되는 경우, 상기 로드 단계는,
    상기 원본 데이터 파일 내의 상기 오브젝트에 대응하는 알려지지 않은 정보를 무시하는 단계; 및
    상기 원본 데이터 파일 내의 상기 오브젝트에 대응하는 알려진 정보를 상기 현재 버전으로 로드하는 단계를 포함하는 원본 데이터 파일 판독 방법.
  35. 제34항에 있어서,
    변환 단계에서 변환된 정보를 포함시키기 위하여 상기 오브젝트 속성 리스트를 업데이트하는 단계; 및
    상기 오브젝트 속성 리스트 내의 오래된 정보를 보유하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  36. 제34항에 있어서,
    상기 오브젝트 속성 리스트는 오브젝트 속성 리스트 배열을 포함하는 원본 데이터 파일 판독 방법.
  37. 제36항에 있어서,
    상기 오브젝트 속성 리스트 배열 내에서 오브젝트의 위치를 추적하는 단계; 및
    상기 추적 단계에서 추적된 상기 오브젝트의 위치에 기초하여 상기 오브젝트 속성 리스트 배열을 업데이트하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  38. 제34항에 있어서,
    알려진 정보 및 알려지지 않은 정보는 상기 오브젝트 속성 리스트의 속성을 각각 포함하는 원본 데이터 파일 판독 방법.
  39. 제34항에 있어서,
    상기 원본 데이터 파일의 수정된 버전을 저장하는 단계를 더 포함하고,
    상기 저장 단계는,
    상기 원본 데이터 파일의 상기 오브젝트 속성 리스트로부터의 알려진 정보를 상기 수정된 버전으로부터의 정보로 덮어쓰는 단계; 및
    상기 나중 버전에서 사용가능한 알려지지 않은 정보를 유지하기 위하여 상기 원본 데이터 파일의 상기 오브젝트 속성 리스트로부터의 상기 알려지지 않은 정보를 보유하는 단계
    를 포함하는 원본 데이터 파일 판독 방법.
  40. 제34항에 있어서,
    상기 원본 데이터 파일 내에 최종 버전 오브젝트 워터마크를 제공하는 단계 - 상기 최종 버전 오브젝트 워터마크는 상기 오브젝트를 기록하는 데 사용된 상기 어플리케이션 프로그램의 최종 버전을 나타냄 -; 및
    상기 최종 버전 오브젝트 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전과 비교함으로써 상기 원본 데이터 파일 내의 상기 오브젝트의 특성을 결정하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  41. 제40항에 있어서,
    상기 결정 단계에서 상기 최종 버전 오브젝트 워터마크가 상기 어플리케이션 프로그램의 상기 현재 버전 보다 이전인 버전에 대응한다고 판정되는 경우, 상기 원본 데이터 파일 내의 상기 오브젝트에 대응하는 정보에 기초하여 상기 어플리케이션 프로그램의 상기 현재 버전 내의 정보를 변환하는 단계를 더 포함하는 원본 데이터 파일 판독 방법.
  42. 제34항의 원본 데이터 파일 판독 방법을 수행하기 위한 컴퓨터 실행가능한 명령어를 갖는 컴퓨터 판독가능 기록 매체.
  43. 어플리케이션 프로그램의 현재 버전 및 이전 버전과 호환가능하도록, 오브젝트 속성 리스트를 포함하는 원본 데이터 파일을 판독하는 방법에 있어서,
    상기 원본 데이터 파일의 상기 오브젝트 속성 리스트 내에 오브젝트에 대한 오브젝트 버전 워터마크를 제공하는 단계 - 상기 오브젝트 버전 워터마크는 상기 오브젝트에 포함된 모든 속성을 해석할 수 있는 상기 어플리케이션 프로그램의 가장 낮은 버전을 나타냄 -;
    상기 원본 데이터 파일 내의 상기 오브젝트가 상기 어플리케이션 프로그램의 상기 이전 버전에 대응하는지를 판정하기 위하여, 상기 오브젝트의 상기 오브젝트 버전 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전 내의 오브젝트 버전과 비교하는 단계; 및
    상기 원본 데이터 파일을 상기 현재 버전으로 로드하는 단계
    를 포함하고,
    상기 비교 단계에서 상기 원본 데이터 파일 내의 상기 오브젝트가 상기 이전 버전에 대응한다고 판정되는 경우, 상기 로드 단계는,
    상기 원본 데이터 파일 내의 상기 오브젝트에 대응하는 오래된 정보를 상기 현재 버전의 포맷으로 변환하는 단계; 및
    상기 변환 단계에서 변환된 정보를 상기 현재 버전으로 로드하는 단계를 포함하는 원본 데이터 파일 판독 방법.
  44. 제43항에 있어서,
    상기 오브젝트 속성 리스트는 오브젝트 속성 리스트 배열을 포함하는 원본 데이터 파일 판독 방법.
  45. 제43항에 있어서,
    상기 오브젝트 속성 리스트 배열 내에서 오브젝트의 위치를 추적하는 단계; 및
    상기 추적 단계에서 추적된 상기 오브젝트의 위치에 기초하여 상기 오브젝트 속성 리스트 배열을 업데이트하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  46. 제43항에 있어서,
    상기 변환 단계에서 변환된 정보를 저장하는 단계; 및
    상기 원본 데이터 파일로부터의 변환되지 않은 오래된 정보를 저장하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  47. 제43항에 있어서,
    상기 변환 단계에서 변환된 정보를 저장하는 단계;
    상기 원본 데이터 파일로부터의 오래된 정보에 대응하는 정보를 생성하는 단계; 및
    상기 생성 단계에서 생성된 정보를 저장하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  48. 제43항의 원본 데이터 파일 판독 방법을 수행하기 위한 컴퓨터 실행가능한 명령어를 갖는 컴퓨터 판독가능 기록 매체.
  49. 어플리케이션 프로그램의 현재 버전 및 이전 버전과 호환가능하도록, 오브젝트 속성 리스트를 포함하는 원본 데이터 파일을 판독하는 방법에 있어서,
    상기 원본 데이터 파일의 상기 오브젝트 속성 리스트 내의 오브젝트에 대한 오브젝트 버전 워터마크를 제공하는 단계 - 상기 오브젝트 버전 워터마크는 상기 오브젝트에 포함된 모든 속성을 해석할 수 있는 상기 어플리케이션 프로그램의 가장 낮은 버전을 나타냄 -;
    상기 원본 데이터 파일 내의 상기 오브젝트가 상기 어플리케이션 프로그램의 상기 이전 버전에 대응하는지를 판정하기 위하여, 상기 오브젝트 버전 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전에서의 오브젝트 버전과 비교하는 단계; 및
    상기 원본 데이터 파일을 상기 현재 버전으로 로드하는 단계
    를 포함하고,
    상기 비교 단계에서 상기 원본 데이터 파일 내의 상기 오브젝트가 상기 이전 버전에 대응한다고 판정되는 경우, 상기 로드 단계는,
    상기 이전 버전이 상기 현재 버전으로부터 삭제되었던 삭제된 항목을 포함하는지를 판정하는 단계;
    상기 판정 단계에서 상기 이전 버전이 상기 삭제된 항목을 포함한다고 판정되는 경우, 상기 삭제된 항목에 대응하는 상기 원본 데이터 파일 내의 오래된 정보를 무시하는 단계; 및
    상기 삭제된 항목 외의 다른 항목에 대응하는 상기 원본 데이터 파일로부터의 정보를 로드하는 단계를 포함하는 원본 데이터 파일 판독 방법.
  50. 제49항에 있어서,
    상기 삭제된 항목은 오브젝트 속성을 포함하는 원본 데이터 파일 판독 방법.
  51. 제49항에 있어서,
    상기 삭제된 항목은 오브젝트를 포함하는 원본 데이터 파일 판독 방법.
  52. 제49항에 있어서,
    상기 원본 데이터 파일의 수정된 버전을 저장하는 단계; 및
    상기 원본 데이터 파일의 상기 삭제된 항목에 대응하는 정보를 저장하는 단계
    를 더 포함하는 원본 데이터 파일 판독 방법.
  53. 제52항에 있어서,
    상기 원본 데이터 파일의 상기 삭제된 항목에 대응하는 정보는, 상기 현재 버전 내의 다른 속성에 기초한 정보 또는 디폴트 값으로부터 유도된 정보 중 하나를 포함하는 원본 데이터 파일 판독 방법.
  54. 제49항의 원본 데이터 파일 판독 방법을 수행하기 위한 컴퓨터 실행가능한 명령어를 갖는 컴퓨터 판독가능 기록 매체.
  55. 어플리케이션 프로그램의 현재 버전 및 이전 버전과 호환가능하도록, 오브젝트 속성 리스트를 포함하는 원본 데이터 파일을 판독하는 방법에 있어서,
    상기 원본 데이터 파일의 상기 오브젝트 속성 리스트 내의 오브젝트에 대한 오브젝트 버전 워터마크를 제공하는 단계 - 상기 오브젝트 버전 워터마크는 상기 오브젝트에 포함된 모든 속성을 해석할 수 있는 상기 어플리케이션 프로그램의 가장 낮은 버전을 나타냄 -;
    상기 원본 데이터 파일 내의 상기 오브젝트가 상기 어플리케이션 프로그램의 상기 이전 버전에 대응하는지를 판정하기 위하여, 상기 오브젝트 버전 워터마크를 상기 어플리케이션 프로그램의 상기 현재 버전에서의 오브젝트 버전과 비교하는 단계; 및
    상기 원본 데이터 파일을 상기 현재 버전으로 로드하는 단계
    를 포함하고,
    상기 비교 단계에서 상기 원본 데이터 파일 내의 상기 오브젝트가 상기 이전 버전에 대응한다고 판정되는 경우, 상기 로드 단계는,
    상기 현재 버전이 상기 원본 데이터 파일 내의 오래된 정보에 관련된 수정된 항목을 포함하는지를 판정하는 단계;
    상기 판정 단계에서 상기 현재 버전이 상기 원본 데이터 파일 내의 상기 오래된 정보에 관련된 상기 수정된 항목을 포함한다고 판정되는 경우, 상기 원본 데이터 파일로부터의 상기 오래된 정보를 상기 수정된 항목에 대응하는 정보로 변환하는 단계; 및
    상기 변환 단계에서 변환된 정보를 상기 현재 버전으로 로드하는 단계를 포함하는 원본 데이터 파일 판독 방법.
  56. 제55항에 있어서,
    상기 수정된 항목은 오브젝트 속성을 포함하는 원본 데이터 파일 판독 방법.
  57. 제55항에 있어서,
    상기 수정된 항목은 오브젝트를 포함하는 원본 데이터 파일 판독 방법.
  58. 제55항에 있어서,
    상기 원본 데이터 파일의 수정된 버전을 저장하는 단계를 더 포함하고,
    상기 저장 단계는,
    상기 수정된 항목에 대응하는 정보를 저장하는 단계;
    제2 변환 단계에서, 상기 수정된 항목에 대응하는 정보를 상기 오래된 정보에 대응하고 상기 이전 버전에 의해 판독가능한 정보로 변환하는 단계; 및
    상기 제2 변경 단계로부터 변환된 정보를 저장하는 단계
    를 포함하는 원본 데이터 파일 판독 방법.
  59. 제55항의 원본 데이터 파일 판독 방법을 수행하기 위한 컴퓨터 실행가능한 명령어를 갖는 컴퓨터 판독가능 기록 매체.
  60. 어플리케이션 프로그램의 현재 버전 및 상기 어플리케이션 프로그램의 나중 버전에 의해 판독가능한 데이터 파일이 저장된 컴퓨터-판독가능 기록 매체에 있어서,
    상기 데이터 파일은,
    오브젝트;
    상기 오브젝트에 관련된 적어도 하나의 알려진 속성 및 상기 오브젝트에 관련된 적어도 하나의 알려지지 않은 속성을 갖는 오브젝트 속성 리스트 배열 - 상기 알려진 속성은 상기 현재 버전에 알려진 것이고, 상기 알려지지 않은 속성은 상기 현재 버전에 알려지지 않은 것임 -; 및
    상기 오브젝트에 포함된 모든 속성을 해석할 수 있는 상기 어플리케이션 프로그램의 가장 낮은 버전을 나타내는 오브젝트 버전 워터마크
    를 포함하고,
    상기 어플리케이션 프로그램의 상기 현재 버전은, 상기 오브젝트 버전 워터마크를 상기 현재 버전에 관련된 버전 번호와 비교하고, 상기 오브젝트 버전 워터마크가 상기 현재 버전에 관련된 버전 번호보다 크다는 판정에 응답하여, 상기 알려지지 않은 속성을 무시하도록 동작하는 어플리케이션 프로그램의 현재 버전 및 상기 어플리케이션 프로그램의 나중 버전에 의해 판독가능한 데이터 파일이 저장된 컴퓨터-판독가능 기록 매체.
  61. 어플리케이션 프로그램의 현재 버전 및 상기 어플리케이션 프로그램의 이전 버전에 의해 판독가능한 데이터 파일이 저장된 컴퓨터-판독가능 기록 매체에 있어서,
    상기 데이터 파일은,
    오브젝트;
    상기 오브젝트에 관련되고 상기 이전 버전에 대응하는 적어도 하나의 속성을 갖는 오브젝트 속성 리스트 배열; 및
    상기 오브젝트에 포함된 모든 속성을 해석할 수 있는 상기 어플리케이션 프로그램의 가장 낮은 버전을 나타내는 오브젝트 버전 워터마크
    를 포함하고,
    상기 어플리케이션 프로그램의 상기 현재 버전은, 상기 오브젝트 버전 워터마크를 상기 현재 버전에 관련된 버전 번호와 비교하고, 상기 오브젝트 버전 워터마크가 상기 현재 버전에 관련된 버전 번호보다 더 작다는 판정에 응답하여, 상기 데이터 파일 내의 상기 적어도 하나의 속성에 기초하여 상기 오브젝트에 관련되고 상기 현재 버전에 대응하는 다른 속성을 업데이트하도록 동작하는 어플리케이션 프로그램의 현재 버전 및 상기 어플리케이션 프로그램의 이전 버전에 의해 판독가능한 데이터 파일이 저장된 컴퓨터-판독가능 기록 매체.
KR1020047005707A 2001-10-18 2002-10-17 확장 가능한 파일 포맷 KR100938077B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/982,764 2001-10-18
US09/982,764 US6704432B2 (en) 2001-10-18 2001-10-18 Extensible file format
PCT/US2002/033145 WO2003034634A2 (en) 2001-10-18 2002-10-17 Extensible computer file format

Publications (2)

Publication Number Publication Date
KR20040048962A KR20040048962A (ko) 2004-06-10
KR100938077B1 true KR100938077B1 (ko) 2010-01-21

Family

ID=25529487

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047005707A KR100938077B1 (ko) 2001-10-18 2002-10-17 확장 가능한 파일 포맷

Country Status (13)

Country Link
US (1) US6704432B2 (ko)
EP (1) EP1436769A4 (ko)
JP (2) JP4393191B2 (ko)
KR (1) KR100938077B1 (ko)
CN (1) CN1286053C (ko)
AU (1) AU2002340246B2 (ko)
BR (1) BR0213375A (ko)
CA (1) CA2460618A1 (ko)
MX (1) MXPA04003570A (ko)
PL (1) PL367819A1 (ko)
RU (1) RU2300141C2 (ko)
WO (1) WO2003034634A2 (ko)
ZA (1) ZA200401912B (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7185201B2 (en) * 1999-05-19 2007-02-27 Digimarc Corporation Content identifiers triggering corresponding responses
JP4050102B2 (ja) * 2002-06-27 2008-02-20 富士フイルム株式会社 画像処理装置、画像処理方法、及びプログラム
CN1856783B (zh) * 2002-07-26 2011-05-25 罗恩·埃弗里特 使用参考与一般数据项关联的数据管理结构
US7305669B2 (en) * 2002-09-27 2007-12-04 Sun Microsystems, Inc. Software upgrades with multiple version support
JP2004288281A (ja) * 2003-03-20 2004-10-14 Sony Corp 記録媒体及びその製造方法、再生方法及び再生装置
JP4370800B2 (ja) * 2003-04-21 2009-11-25 ヤマハ株式会社 音楽コンテンツ利用装置及びプログラム
US7155444B2 (en) * 2003-10-23 2006-12-26 Microsoft Corporation Promotion and demotion techniques to facilitate file property management between object systems
US20050222968A1 (en) * 2004-04-06 2005-10-06 International Business Machines Corporation System, method and program product for identifying differences between sets of program container files
DE102005058006A1 (de) * 2005-12-05 2007-06-06 Siemens Ag Verfahren und Peer-Netzwerk zur Ermittlung der Peer-Netzwerk-Herkunftsstadion einer Datei
US9009695B2 (en) * 2006-05-12 2015-04-14 Nuance Communications Austria Gmbh Method for changing over from a first adaptive data processing version to a second adaptive data processing version
CN100524333C (zh) * 2006-06-13 2009-08-05 正璞科技有限公司 防止非法使用软件的方法
US20090144513A1 (en) * 2007-12-03 2009-06-04 Pitney Bowes Inc. Database update method
CN101685394A (zh) * 2008-09-26 2010-03-31 国际商业机器公司 用于提供版本间文档兼容性的方法和装置
WO2012033498A1 (en) * 2010-09-10 2012-03-15 Hewlett-Packard Development Company, L.P. Systems and methods for data compression
CN102567935B (zh) * 2010-12-29 2017-04-12 新奥特(北京)视频技术有限公司 一种实现特效版本兼容的方法和系统
CN102426518A (zh) * 2011-04-20 2012-04-25 重庆新世杰电气股份有限公司 一种实现软件版本兼容的方法
JP5713809B2 (ja) * 2011-06-10 2015-05-07 三菱電機株式会社 バージョンダウン管理装置
US8825722B2 (en) * 2012-01-13 2014-09-02 Microsoft Corporation Calculation of properties of objects/shapes across versions of applications
US9607134B2 (en) * 2013-10-24 2017-03-28 Cyber-Ark Software Ltd. System and method for protected publication of sensitive documents
US10956406B2 (en) * 2017-06-12 2021-03-23 Palantir Technologies Inc. Propagated deletion of database records and derived data
RU2722239C1 (ru) * 2019-11-26 2020-05-28 Общество с ограниченной ответственностью «ПИРФ» (ООО «ПИРФ») Способ создания и использования формата исполняемого файла с динамическим расширяемым заголовком

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010050460A (ko) * 1999-09-27 2001-06-15 포만 제프리 엘 파일을 최신 버전으로 유지하기 위한 방법, 시스템 및컴퓨터 프로그램 제품

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5133051A (en) 1990-12-13 1992-07-21 Handley George E Automatic high speed publishing system
US5367698A (en) 1991-10-31 1994-11-22 Epoch Systems, Inc. Network file migration system
US5740405A (en) * 1992-12-17 1998-04-14 Microsoft Corporation Method and system for providing data compatibility between different versions of a software program
US6122403A (en) * 1995-07-27 2000-09-19 Digimarc Corporation Computer system linked by using information in data objects
US5881287A (en) 1994-08-12 1999-03-09 Mast; Michael B. Method and apparatus for copy protection of images in a computer system
US5530759A (en) 1995-02-01 1996-06-25 International Business Machines Corporation Color correct digital watermarking of images
EP2110732A3 (en) 1995-02-13 2009-12-09 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US5991771A (en) 1995-07-20 1999-11-23 Novell, Inc. Transaction synchronization in a disconnectable computer and network
US5933842A (en) 1996-05-23 1999-08-03 Microsoft Corporation Method and system for compressing publication documents in a computer system by selectively eliminating redundancy from a hierarchy of constituent data structures
US5946696A (en) 1996-05-31 1999-08-31 Microsoft Corporation Object property lists
US5974548A (en) 1996-07-12 1999-10-26 Novell, Inc. Media-independent document security method and apparatus
US5878434A (en) 1996-07-18 1999-03-02 Novell, Inc Transaction clash management in a disconnectable computer and network
US6272631B1 (en) 1997-06-30 2001-08-07 Microsoft Corporation Protected storage of core data secrets
US5983242A (en) 1997-07-01 1999-11-09 Microsoft Corporation Method and system for preserving document integrity
US6071317A (en) 1997-12-11 2000-06-06 Digits Corp. Object code logic analysis and automated modification system and method
KR100920320B1 (ko) * 2000-02-19 2009-10-07 디지맥 코포레이션 워터마크 인코더 및 디코더를 작동시키는 소프트웨어

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010050460A (ko) * 1999-09-27 2001-06-15 포만 제프리 엘 파일을 최신 버전으로 유지하기 위한 방법, 시스템 및컴퓨터 프로그램 제품

Also Published As

Publication number Publication date
ZA200401912B (en) 2006-03-29
JP4393191B2 (ja) 2010-01-06
JP4660607B2 (ja) 2011-03-30
PL367819A1 (en) 2005-03-07
AU2002340246B2 (en) 2008-02-14
CN1571978A (zh) 2005-01-26
WO2003034634A2 (en) 2003-04-24
WO2003034634A3 (en) 2003-10-16
KR20040048962A (ko) 2004-06-10
JP2009266246A (ja) 2009-11-12
EP1436769A2 (en) 2004-07-14
RU2300141C2 (ru) 2007-05-27
MXPA04003570A (es) 2004-07-27
US20030076978A1 (en) 2003-04-24
JP2005539277A (ja) 2005-12-22
CN1286053C (zh) 2006-11-22
BR0213375A (pt) 2005-02-01
CA2460618A1 (en) 2003-04-24
EP1436769A4 (en) 2008-03-05
US6704432B2 (en) 2004-03-09
RU2004114998A (ru) 2005-09-20

Similar Documents

Publication Publication Date Title
JP4660607B2 (ja) 拡張可能ファイル形式
AU2002340246A1 (en) Extensible computer file format
US6850929B2 (en) System and method for managing file system extended attributes
US5623661A (en) System for and method of providing delta-versioning of the contents of PCTE file objects
US5802539A (en) Method and apparatus for managing text objects for providing text to be interpreted across computer operating systems using different human languages
JP5231013B2 (ja) パッケージの中のパーツ間の関係を維持する方法および装置
RU2368943C2 (ru) Модульный формат документов
US8655897B2 (en) Data converting apparatus, method, and computer product
US7631022B2 (en) Information processing apparatus and recording medium
US20020049731A1 (en) Information processing method and apparatus
EP1176523A2 (en) System for providing extended file attributes
US6604170B1 (en) Information processing apparatus and method, and computer readable memory
JP2003527671A (ja) 電子式設計自動化用途のデータベース
US20080303839A1 (en) Facilitating caching in an image-processing system
US20110209135A1 (en) Program Change Management Apparatus, Computer Readable Record Medium Storing Program Change Management Program, And Program Change Management Method
US11645058B2 (en) User interface resource file optimization
US6768993B2 (en) System and method for file system cooperation in a multi-threaded environment
CN105243090A (zh) 一种独占文件的获取方法和系统
Gansner Using Graphviz as a Library (cgraph version)
KR20050087349A (ko) 리소스 관리를 위한 패키지 파일 포맷 및 리소스 관리 방법
JPH09152965A (ja) クラスライブラリ再構築方法
JP2002244901A (ja) ファイル管理装置及びファイル管理方法、並びに記憶媒体

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
FPAY Annual fee payment

Payment date: 20121227

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131227

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151217

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20161220

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20171219

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20191217

Year of fee payment: 11