JP2017059244A - 照会スキーマに基づくapiバージョン検査 - Google Patents

照会スキーマに基づくapiバージョン検査 Download PDF

Info

Publication number
JP2017059244A
JP2017059244A JP2016206779A JP2016206779A JP2017059244A JP 2017059244 A JP2017059244 A JP 2017059244A JP 2016206779 A JP2016206779 A JP 2016206779A JP 2016206779 A JP2016206779 A JP 2016206779A JP 2017059244 A JP2017059244 A JP 2017059244A
Authority
JP
Japan
Prior art keywords
data
query
data items
nodes
retrieved
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2016206779A
Other languages
English (en)
Other versions
JP6280971B2 (ja
Inventor
ヘイグ シュロック、ニコラス
Hage Schrock Nicholas
ヘイグ シュロック、ニコラス
ウィリアムズ バイロン、リー
Williams Byron Lee
ウィリアムズ バイロン、リー
エル. シェーファー、ダニエル
L Schafer Daniel
エル. シェーファー、ダニエル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Meta Platforms Inc
Original Assignee
Facebook Inc
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 Facebook Inc filed Critical Facebook Inc
Publication of JP2017059244A publication Critical patent/JP2017059244A/ja
Application granted granted Critical
Publication of JP6280971B2 publication Critical patent/JP6280971B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24566Recursive queries
    • 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/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Cash Registers Or Receiving Machines (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

【課題】照会スキーマに基づくAPIバージョン検査方法を提供する。
【解決手段】一実施形態の方法は、1つまたは複数の階層的グラフに格納されたデータ項目を取り出すために用いられるアプリケーションプログラミングインターフェース(API)の第1バージョンに関連する1つまたは複数の第1スキーマであって、データ項目が属する1つまたは複数のデータタイプの1つまたは複数の定義を備える第1スキーマを格納し、APIの第2バージョンに関連する1つまたは複数の第2スキーマを形成し、第2照会スキーマを第1照会スキーマと比較することによって、APIの第2バージョンを検証することを備える。
【選択図】 図3

Description

本開示は、一般には、情報記憶、検索、および処理を含む情報管理に関する。
データまたは情報は特定のフォーマットに従って編成および格納される。その後で、特定のいくつかの格納されたデータまたは情報はストレージから取り出される。
格納されたデータまたは情報を取り出す実際の手段は、データまたは情報を編成および格納するのに使用される特定のフォーマットに依存することがある。例えば、データが表フォーマットに従って(例えば、列、行、およびセルを有する表で)編成および格納される場合、特定のいくつかのデータを取り出すために、所望のいくつかのデータが格納される特定の列、行、またはセルを識別することが必要であることがある。
いくつかの特定の実施形態では、各階層中に任意の数のノードを含み得る1つまたは複数の階層型グラフ内にデータ項目が編成および格納される。グラフ内の特定のノード間に関係が存在することがあり、その関係は、対応するノードによって表されるデータ項目間に存在する関係を反映し得る。したがって、グラフの構造はそのグラフ内に含まれる個々のデータ項目間の関係を反映し得る。
いくつかの特定の実施形態では、グラフ内に格納されたデータを求めてグラフに照会し、グラフから特定のデータ項目を取り出すアプリケーションプログラミングインターフェース(API)が提供される。さらに、グラフ内に格納される特定のデータ項目を求める照会は階層構造を有する言語で表現され得る。取り出されたデータ項目も階層構造で編成される。
いくつかの特定の実施形態では、APIは任意の数のバージョンを有し得る。APIの各バージョンに関連して任意の数の照会スキーマが存在し得る。照会スキーマは、グラフ内で利用可能な様々なデータタイプと、グラフからどれほど異なるタイプのデータを取り出すことができるかを含むことができる。照会スキーマを使用して、APIの異なるバージョンが検査および検証され得る。
いくつかの特定の実施形態では、グラフ内に格納されたデータ項目は、様々なデータタイプを有し得る。アプリケーションは、APIから返されるデータ項目のデータタイプおよびデータ構造を求めてAPIに照会し得る。
階層構造を有する例示的グラフを示す図。 階層型グラフから特定のデータ項目を取り出す例示的方法を示す図。 スキーマに基づいてアプリケーションプログラミングインターフェースのバージョンを検証する例示的方法を示す図。 内観的照会(introspection query)に基づいて階層型グラフからデータ項目を取り出す例示的方法を示す図。 例示的コンピュータシステムを示す図。
いくつかの特定の実施形態では、階層構造をそれぞれ有する任意の数のグラフ内にデータが編成および格納され得る。各グラフは、各階層中に任意の数のノードを含み得る。すなわち、1つのグラフ内に任意の数のレベルがあり、各レベルには任意の数のノードがある。各ノードは、いくつかの特定のデータ項目を表すことができ、またはいくつかの特定のデータ項目を格納するのに使用することができる。グラフ内の特定のノード間に関係が存在することがあり、その関係は、これらの対応するノードによって表される特定のデータ項目間の関係を反映し得る。したがって、グラフの構造はそのグラフ内に含まれる個々のデータ項目間の関係を反映し得る。いくつかの特定の実施形態では、データ項目は様々なタイプを有し得る。
いくつかの特定の実施形態では、グラフ内に格納されたデータを求めてグラフに照会し、グラフから特定のデータ項目を取り出すアプリケーションプログラミングインターフェース(API)が提供される。いくつかの特定の実施形態では、グラフ内に格納される特定のデータ項目を求める照会は、階層構造を有する言語で表現される。したがって、照会自体が階層構造を有する。いくつかの特定の実施形態では、照会によって指定される所望のデータ項目がグラフ内で見つかると、データ項目がまたはより具体的にはこれらのデータ項目を表すかまたは含むノードが、照会に応答してグラフから取り出される。取り出されたデータ項目も階層構造で編成される。
いくつかの特定の実施形態では、APIは任意の数のバージョンを有し得る。一例を挙げると、APIは古いバージョンから新しいバージョンに時々更新され得る。別の例を挙げると、異なるプラットフォーム(例えば、モバイル、デスクトップ、ウェブベース)のために開発された異なるバージョンのAPIが存在することがある。いくつかの特定の実施形態では、APIの各バージョンに関連して任意の数の照会スキーマが存在し得る。照会スキーマは、グラフ内で利用可能な様々なデータタイプと、グラフからどれほど異なるタイプのデータを取り出すことができるかを含み得る。
いくつかの特定の実施形態では、正しく機能することが知られているAPIの第1のバージョンが与えられると、第1および第2のバージョンにそれぞれ関連する複数の照会スキーマを使用して第2のバージョンのAPIがテストされて、第2のバージョンも正しく機能することが確認され得る。第2のバージョンのAPIに関連する照会スキーマは第1のバージョンに関連する照会スキーマと比較されて、例えば、第1のバージョンに関連する照会スキーマ内に存在するすべてのデータタイプが第2のバージョンに関連する照会スキーマ内にも存在することを確認することができ、第2のバージョンに関連する照会スキーマを使用してグラフから様々なタイプのデータを照会し取り出すことにより、第1のバージョンに関連する照会スキーマを使用するのと同一の結果が得られる。
いくつかの特定の実施形態では、グラフ内に格納されたデータ項目は様々なデータタイプを有し得る。アプリケーションは、APIから返されるデータ項目のデータタイプおよびデータ構造を求めてAPIに照会し得る。いくつかの特定の実施形態では、アプリケーションは、特定のデータタイプを求める内観的照会(すなわち、特定のデータタイプのコンテンツまたはデータ構造を検査することを求める要求)を生成し得る。アプリケーションは、APIに内観的照会をサブミットし、特定のデータタイプのデータ構造をグラフから取り出し得る。アプリケーションは、内観的照会によって取り出されたデータ構造に基づいて、特定のデータタイプを有するデータ項目をグラフに要求するデータ照会を構築し得る。
図1は階層構造を有する例示的グラフ100を示す。グラフ100は任意の数のレベルの階層内に任意の数のノードを有し得る。階層の各レベルには1つまたは複数のノードが存在し得る。様々なタイプの関係がいくつかの特定のノード間に存在することができ、当該関係が階層の構造に反映され得る。例えば、2つの特定のノード間に親子関係が存在することがある。図1では、ノード110Aがノード110B、110C、および110Dの親であり、逆に、ノード110B、110C、および110Dはいずれもノード110Aの子であり得る。一般には、ひとつのノードは任意の数の子または親を有し得る。別の例では、2つの特定のノード間に兄弟関係が存在することがある。図1では、ノード110B、110C、および110Dは共通の親ノード110Aを共有する兄弟である。第3の例を挙げると、2つの特定のノード間に接続が存在してもよい。図1では、ノード110Aおよび110Eの間にひとつの接続が存在する。
いくつかの特定の実施形態では、データはグラフ100などの階層型グラフに編成され格納される。グラフ内の各ノードは、いくつかの特定のデータ項目を表すかまたは含み得る。グラフの構造はノード間の関係を反映し、したがってこれらのノードによって表されるかまたはこれらのノード内に含まれる特定のデータ項目間の関係を反映する。
いくつかの特定の実施形態では、ソーシャルネットワーキングシステムに関連するデータまたは情報が、任意の数の階層型グラフ内に格納され得る。ソーシャルネットワーキングシステムに関連する様々なタイプのデータがあり、いくつかの特定のデータ項目は特定のノードによって表されるかまたは特定のノード内に含まれる。例えば、いくつかのノードは、ソーシャルネットワーキングシステムの個々のユーザを表すことができ、そのようなノードのうちの2つに対応する2人のユーザがソーシャルネットワーキングシステム内の「友人」である場合に、当該2つのノードは接続され得る。いくつかのノードは、特定のユーザによって実施される活動(例えば、オンラインまたはオフライン)を表してもよい。ユーザを表すノードと、そのユーザによって実施される活動を表すノードとは接続され得る。さらに、ユーザを表すノードは、そのユーザによって実施される活動を表すノードの親とみなすことができ、ユーザと活動との間の関係(すなわち、ユーザが活動を実施する)を反映する。いくつかのノードは、特定のユーザに関連するコンテンツ(例えば、画像、ビデオ、ポスト、メッセージ、フィード)を表し得る。ノードおよびその子ノードは、フォトアルバムおよびそのフォトアルバムに属する特定の写真をそれぞれ表してもよい。この場合、フォトアルバムを表すノードと、そのフォトアルバムに属する画像を表す各ノードとの間に接続が存在し得る。別のノードおよびその子ノードは、ユーザおよびそのユーザによってアップロードされたフォトアルバムをそれぞれ表すことがある。
いくつかの特定の実施形態では、データ(例えば、ソーシャルネットワーキングシステムに関連するデータ)を含むグラフは、(例えば、データストアまたはメモリ内に)格納され、所望されるときにはいつでもグラフから特定のデータ項目を取り出し得る。いくつかの特定の実施形態では、グラフ内に格納されたデータを求めてグラフに照会し、グラフから特定のデータ項目を取り出すAPIが提供される。
図2は階層型グラフから特定のデータ項目を取り出す例示的方法を示す。いくつかの特定の実施形態では、データが階層型グラフ内に格納され、グラフ内の各ノードが1つまたは複数の特定のデータ項目を含むかまたは表すものと想定する。ユーザは、APIを使用して、これらの階層型グラフ内に格納された特定のデータ項目を照会し得る。
いくつかの特定の実施形態では、図2に示す方法は、ユーザが階層型グラフから取り出すべき特定のデータ項目を識別する照会を送り得るステップ210で開始される。例えば、適切なコンピュータまたは通信接続(例えば、ワイヤレスまたはワイヤーライン接続)を介して、ユーザ装置(例えば、モバイルまたは非モバイルユーザ装置)から、グラフを管理するコンピューティングシステム(例えば、サーバ)に照会は送られる。いくつかの特定の実施形態では、適切なAPI呼出しがユーザ装置によって起動されてサーバに照会を送る。
いくつかの特定の実施形態では、照会は階層構造を有する言語で表現される。さらに、いくつかの特定の実施形態では、言語は事前定義された構文を有してもよい。以下に例示的照会を示す。
この例では、「me」は、照会をサブミットするユーザであり、「id」は、オブジェクト(例えば、ユーザまたはデータ項目)に関連する固有の識別子である。この例示的照会は、「my_objects」という特定のタイプの最初の10個のデータ項目を要求する。この例示的照会が示すように、この照会は階層構造を有する。この階層のトップレベルは「me」である。「me」内にネスト化される第2のレベルは、「id」、「name」、および「my_objects」である。「my_objects」内にネスト化される第3のレベルは「nodes」である。以下同様である。
いくつかの特定の実施形態では、ステップ220で、照会で指定されるデータ項目がグループから取り出される。より具体的には、指定されるデータ項目を表すかまたは含むノードがグループから識別されて、これらのノードからデータ項目が取り出される。照会において特定のデータ項目がその固有の識別子、そのデータタイプ、または任意の他の適用可能な手段(例えば、1つまたは複数の基準を満たすデータ項目)によって識別され得る。
いくつかの特定の実施形態では、データ項目は特定のデータタイプを有し得る。例えば、1つのタイプのデータ項目は「user」でよく、別のタイプのデータ項目は「message post」でよく、第3のタイプのデータ項目は「image」でよく、以下同様である。本開示は任意の適用可能なデータタイプを企図する。いくつかの特定の実施形態では、新しいデータタイプが必要に応じて(例えば、システムマネージャ、またはユーザ、またはサードパーティ開発者によって)定義され追加され得る。これらのデータタイプの定義は、APIおよびグラフに関するスキーマを形成し得る。特定のデータタイプの定義は、どのようにそのタイプのデータ項目を照会し、グラフから取り出すことができるかを指定し得る。以下に、「node」と呼ばれるデータタイプの例示的定義を示す。この定義はデータタイプ「node」を記述し、この定義をスキーマ内に含めることができる。
この例示的データタイプでは、その定義によって定義されるように、このタイプの名前は「node」である。タイプのフィールドは「id」および「url」を含む。さらに、データタイプ自体およびそのフィールドのそれぞれの説明も定義内に含めることができる(例えば、APIコードの一部として)。
いくつかの特定の実施形態では、ユーザは、適切なAPI呼出しを起動して、スキーマで定義された特定のデータタイプに関する情報を求めてそのデータタイプを照会し得る。例えば、「node」を求めて照会するために、ユーザは、次のような照会をサブミットし得る。
照会は、タイプ「node」自体の名前および説明、ならびにタイプ「node」のフィールドの名前および説明を要求する。この照会の結果、以下の応答が得られる。
応答は、上記で示した「node」の定義で定義されるように、タイプ「node」およびそのフィールドのそれぞれ(すなわち、「id」および「url」)の名前および説明を含む。さらに、応答も、照会の階層構造に対応する階層構造に構成される。
この例が示すように、いくつかの特定の実施形態では、特定のデータタイプを記述する情報をそのデータタイプの定義内に含めることができる。APIを使用してデータ項目を照会するのと同様に、APIを使用してデータタイプの説明を照会し得る。この意味で、APIは自己ドキュメンティング(self−documenting)である。すなわち、データタイプのドキュメンテーションが、その定義の部分としてスキーマ内に含まれる。
いくつかの特定の実施形態では、階層型グラフ内に格納されたデータ項目のうちのいくつかまたはすべてに関連するプライバシー保護が存在し得る。あるデータ項目は、特定のリストのユーザによってのみアクセスでき、他のユーザによってアクセスできない。例えば、あるユーザが写真(すなわち、データ項目)をポストするとき、そのユーザは、そのユーザのソーシャルフレンドだけが写真を閲覧できるように指定し得る。この場合、このユーザと友人ではない他のユーザは、この特定の写真にアクセスすることが許可されない。
いくつかの特定の実施形態では、照会に応答してデータ項目を取り出すとき、特定のデータ項目に関連するプライバシー保護が考慮に入れられる。一例を挙げると、第1のユーザが照会を行って、第2のユーザ(例えば、第1のユーザの友人)によってポストされた最新10個のメッセージを要求する状況を想定する。照会に応答してこれらのメッセージを第1のユーザのために取り出すとき、第2のユーザによってポストされた各メッセージは、第1のユーザがそのメッセージにアクセス許可されているかどうかを判定するために解析され得る。第2のユーザによってポストされた最新10個のメッセージの中で、(例えば、第2のユーザによって指定される)3つは第3のユーザだけが閲覧することができ、7つは第1のユーザを含むすべてのユーザが閲覧できる状況を想定する。この場合、第1のユーザの照会に応答して、7つのメッセージだけが取り出される。第1のユーザは、第3のユーザだけが閲覧することのできる3つのメッセージを閲覧することが許可されないので、これらの特定のメッセージは、第1のユーザのために取り出されない。その代わりに、第1のユーザの照会によって要求されるように10個のメッセージを埋め合わせるために、第1のユーザの閲覧が許可される、第2のユーザによってポストされた(例えば、逆発生順(reverse chronological order)で識別される)3つのわずかに古いメッセージが取り出され、先述の7つのメッセージと組み合わされる。一方、第2のユーザによってポストされた最新10個のメッセージを要求するのが第3のユーザである場合、第3のユーザは、これらのメッセージのすべてを閲覧することを許可されるので、第3のユーザの照会に応答して、10個の最新のメッセージのすべてを取り出すことができる。この例が示すように、2人のユーザが同一の照会をサブミットするとき、データ項目に関連するプライバシー保護のために、その2人のユーザは応答として異なる結果を受信することがある。
いくつかの特定の実施形態では、多数のデータ項目の取り出しが一連の照会に応答して実行され得る。このことは、モバイル装置などのいくつかのタイプのユーザ装置にとって性能改善の点で役立つことがある。一例を挙げると、あるユーザが、当該ユーザのソーシャルフレンドのすべてによってポストされた最新100枚の写真を取り出して閲覧することを望む状況を想定する。100枚の写真を求める単一の照会をサブミットする代わりに、ユーザは、各照会が1度に10枚の写真を要求する一連の10個の照会をサブミットし得る。このようにして、ユーザは、他の写真が取り出されユーザの装置に送られる間に、いくつかの写真の閲覧を開始することができる。さらに、ユーザは、(例えば、すべての100枚の写真を一緒に閲覧するのではなく)ある時にいくつかの写真を閲覧し、別の時に残りの写真を閲覧することができる。
いくつかの特定の実施形態では、ユーザによってサブミットされた照会およびその応答が記録され得る。上記の例では、ユーザがそのユーザの友人によってポストされた最新10枚の写真を求める第1の照会をサブミットしたとき、ユーザにとってアクセス可能な10枚の最新の写真がグラフから取り出されユーザに送られ得る。さらに、ユーザに送られた10枚の写真がまたはその10枚の写真のうちの最後の1枚が記録されてもよい。その後ユーザが別の10枚の写真を求める第2の照会をサブミットしたとき、ユーザにとってアクセス可能な、逆発生順で前の10枚の写真の後から始まる2番目に新しい10枚の写真群がグラフから取り出されユーザに送られてもよい。この場合も、ユーザにこの時送られた10枚の写真群のうちの最後の1枚が記録されてもよい。ユーザがさらに別の10枚の写真を求める第3の照会をサブミットしたとき、ユーザにとってアクセス可能な、逆発生順で前の10枚の写真の後から始まる3番目に新しい10枚の写真群がグラフから取り出されユーザに送られ得る。以下同様である。このようにして、データ検索工程は、ユーザのためのページ付け(pagination)を自動的に処理する。
ステップ230で、取り出したデータ項目は階層フォーマットに従って編成され、照会をサブミットするユーザに送られる。時には、要求されたデータ項目を表すかまたは含むノードは、異なる複数のグラフに属することがある。この場合、当該データ項目は、適切な複数のグラフ内の適切な複数のノードから取り出されて、単一の階層構造に構成され得る。
いくつかの特定の実施形態では、出力されるデータ項目の階層構造は、照会の階層構造に対応し得る。照会がタイプ「node」自体の名前および説明と、その後に続くタイプ「node」のフィールドの名前および説明を要求する上記の例で示したように、出力されるデータ項目が階層構造に構成される。1つのレベルはタイプ「node」である。「node」内にネスト化される次のレベルは、タイプ「node」の名前、説明、フィールドである。「fields」内にネスト化されるさらに次のレベルは、タイプ「node」のフィールドのそれぞれの名前および説明である。出力されるデータ項目の構成は、照会の構成に対応する。
いくつかの特定の実施形態では、個々のデータタイプの定義は、1つまたは複数のスキーマを形成し得る。これらの定義はデータ項目がその定義に基づいて照会され取り出されるように、API内に含められ得る。多くの場合、異なるバージョンのAPIが存在し得る。例えば、時々、APIは古いバージョンから新しいバージョンに更新され得る。異なるプラットフォーム(例えば、モバイルと非モバイルの、異なるオペレーティングシステム)のために異なるバージョンのAPIを実装することができ、各バージョンは、対応するプラットフォームに特に適したコードを含むことになる。
いくつかの特定の実施形態では、スキーマを使用して、特定のバージョンのAPIがテストされ検証され得る。図3はスキーマを使用してAPIのバージョンを検証する例示的方法を示す。正しく機能することが知られている第1のバージョンのAPIがあると想定する。1つまたは複数のスキーマを第1のバージョンのAPIに関連付けることができ、これらのスキーマは、利用可能なすべてのデータタイプ(例えば、階層型グラフ内に格納されたデータ項目が属するデータタイプ)の定義を含むことができる。第2のバージョンのAPIが利用可能となる、とさらに想定する。
ステップ310で、第1のバージョンのAPIに関連するスキーマが記録され得る。次いで、第2のバージョンのAPIを使用して、(例えば、テストおよび検証のために)グループからデータ項目が取り出され得る。いくつかの特定の実施形態では、ステップ320において、例えば、第1のバージョンに関連するスキーマ内のデータタイプのすべての定義が第2のバージョンに関連するスキーマ内でも見つかること(すなわち、第2のバージョンに欠落しているデータタイプはない)、または第2のバージョンに関連するスキーマで見つかる特定のデータタイプの定義が第1のバージョンに関連するスキーマで見つかるものと同一であること、または特定の照会に応答して第2のバージョンのAPIを使用してデータ項目を取り出すことが、第1のバージョンを使用するのと同一の結果を生み出す(すなわち、第1のバージョンに関連するスキーマに従って表現された照会と、同一のデータ項目に関する第2のバージョンに関連するスキーマに従って表現された照会とを使用することが、同一の結果を生み出す)ことを確認するために、第2のバージョンのAPIに関連するスキーマが第1のバージョンに関連するスキーマと比較され得る。
第2のバージョンのAPIがスキーマに基づいて正しく機能する場合、第2のバージョンはリリースされ得る。そうでない場合、第2のバージョンがリリース可能になる前に、第2のバージョンのエラー(例えば、データタイプ定義の紛失、または誤ったデータタイプ定義)をまず訂正する必要がある。
前述のように、階層型グラフ内に格納されたデータ項目は、様々なデータタイプを有することができる。通常、アプリケーション(またはアプリケーションのコードを書くプログラマ)は、特定のタイプのデータ項目をデータベース(例えば、階層型グラフ)に照会し、データベースから取り出す(または取り出したデータ項目のデータタイプを検証する)前に、特定のデータタイプの定義を必要とする。いくつかの特定の実施形態は、内観的照会に基づいて階層型グラフからデータ項目を取り出し得る。いくつかの特定の実施形態は、グラフのAPIに内観的照会をサブミットして、特定のデータタイプのデータ構造を取り出し得る。次いでいくつかの特定の実施形態は、内観的照会によって取り出されたデータ構造に基づいて、特定のデータタイプのデータ項目を求めるデータ照会をAPIにサブミットし得る。いくつかの特定の実施形態はまた、応答のデータ構造を取り出されたデータ構造と比較することにより、データ照会に対する応答を検証してもよい。
図4は内観的照会に基づいて階層型グラフからデータ項目を取り出す例示的方法を示す。いくつかの特定の実施形態では、図4に示す方法はアプリケーションが特定のデータタイプのデータ構造を要求する第1の照会(内観的照会)を送るステップ410で開始し得る。いくつかの特定の実施形態では、ステップ420で、アプリケーションはグラフから特定のデータタイプのデータ構造を取り出し得る。例えば、ユーザのクライアント装置によってホストされるアプリケーションにより、適切なコンピュータまたは通信接続(例えが、ワイヤレスまたはワイヤーライン接続)を介して、グラフを管理する1つまたは複数のコンピューティングシステム(例えば、サーバ)に内観的照会を送り得る。いくつかの特定の実施形態では、適切なAPI呼出しがアプリケーションによって起動されて、サーバに内観的照会を送り、サーバから結果を取り出す。いくつかの特定の実施形態では、特定のデータタイプのデータ構造を要求する照会は、階層構造を有する言語で表現され得る。さらに、いくつかの特定の実施形態では、言語は事前定義された構文を有し得る。以下に例示的内観的照会を示す。
この照会は、(プレフィックス「type」によって示されるように)データタイプ「my_objects」の名前およびフィールドを要求する。照会はまた、データタイプ「my_objects」のフィールドの1つまたは複数の子データ構造が存在する場合にその名前およびフィールドを要求する。取り出されたデータ構造(すなわち、内観的照会に対する応答)をJava(登録商標) Script Object Notation(JSON)フォーマットで表現することができる。例えば、照会の結果、以下の応答が得られる。
応答は、データタイプ「my_objcts」の名前、およびそのフィールド(すなわち、「id」、「comment_count」、および「actors」)のそれぞれの名前を含む。応答はまた、フィールド「actors」のフィールド(すなわち、「id」および「friends」)のそれぞれの名前をも含む。すなわち、データタイプ「my_objcts」は、「name」、「id」、「comment_count」、および「actors」をトップレベルに含む階層データ構造を有すると共に、「id」および「friends」が、第2のレベルで「actors」内にネスト化される。
いくつかの特定の実施形態では、ステップ430で、アプリケーションが、特定のデータタイプを有する1つまたは複数の特定のデータ項目を要求する第2の照会(データ照会)を生成し得る。いくつかの特定の実施形態では、データ照会は、指定されたデータタイプの取り出されたデータ構造に対応するフォーマットで表現され得る。以下に例示的データ照会を示す。
この例では、アプリケーションは、固有の識別子「id」を有するユーザ「me」からの要求に基づいて照会をサブミットする。この照会は、特定のデータタイプ「my_objects」の最初の3つのデータ項目を要求する。照会は、指定されたデータタイプ「my_objcts」の取り出されたデータ構造に対応する階層フォーマットで表現され、照会要求の結果、トップレベルで「id」、「comment_count」、および「actors」が得られ、第2のレベルで「actors」内にネスト化される「id」および「friends」が得られる。
いくつかの実施形態では、アプリケーションは、指定されたデータタイプ「my_objcts」の取り出されたデータ構造内のすべてではないがいくつかのフィールドを有する第2の照会(データ照会)を生成することができる。以下に別の例示的データ照会を示す。
照会要求の結果、トップレベルで「id」および「actors」が得られ、第2のレベルで「actors」内にネスト化される「id」および「friends」が得られる。指定されたデータタイプ「my_objcts」の取り出されたデータ構造のトップレベルのフィールド「comment_count」は、照会では省略される。いくつかの特定の実施形態では、ステップ440で、アプリケーションが、グラフから特定のデータ項目を取り出し得る。取り出されたデータ項目はJSONフォーマットで表現され得る。例えば、照会の結果、以下の応答が得られる。
この応答は、「id」がそれぞれ「0123」、「2345」、および「6789」である3つの結果を含む。
データ照会が応答のデータ構造を完全に記述するので、いくつかの特定の実施形態は、データ照会のデータ構造(特定のデータタイプの取り出されたデータ構造に基づくもの)に対して応答を検証し得る。いくつかの特定の実施形態では、アプリケーションは、特定のデータタイプの取り出されたデータ構造に基づいて、取り出されたデータ項目を検証し得る。アプリケーションは、取り出されたデータ項目を再帰的構文解析アルゴリズムで検査することにより、取り出されたデータ項目を特定のデータタイプの取り出されたデータ構造と比較し得る。例えば、アプリケーションは、「0123」および「6789」の「id」を有する上記の結果が、「id」および「actors」がトップレベルにあると共に、「id」および「friends」が第2のレベルで「actors」内にネスト化される、取り出されたデータ構造と一致するデータ構造を有すると判定することができる。アプリケーションは、「2345」の「id」を有する上記の結果が、取り出されたデータ構造と一致するデータ構造を有しないと判定することができる。「2345」の「id」を有する結果は、そのデータ構造のトップレベルに「id」および「actors」を有するが、そのデータ構造の第2のレベルで「actors」内にネスト化される「id」および「profile_pic_img」を有する。「2345」の「id」を有する結果は、予期しないデータ構造を有し、誤った結果の可能性があるので、アプリケーションは、「2345」の「id」を有する結果を廃棄し得る。アプリケーションはまた、APIに別のデータ照会をサブミットして、特定のデータタイプの1つまたは複数のデータ項目をグラフから取り出し得る。
いくつかの特定の実施形態は、適切な場合に図4の方法のステップを反復し得る。なお本開示は図4の方法の特定のステップが特定の順序で行われるものとして説明および図示するが、図4の方法の任意の適切なステップが任意の適切な順序で行われることも企図する。さらに、本開示は、図4の方法の特定のステップを実施する特定の構成要素、装置、またはシステムを説明および図示するが、図4の方法の任意の適切なステップを実施する任意の適切な構成要素、装置、またはシステムの任意の適切な組合せも企図する。
1つまたは複数のコンピュータシステム上で特定の実施形態を実装することができる。図5に、例示的コンピュータシステム500を示す。いくつかの特定の実施形態では、1つまたは複数のコンピュータシステム500は、本明細書で説明または図示する1つまたは複数の方法の1つまたは複数のステップを実施する。いくつかの特定の実施形態では、1つまたは複数のコンピュータシステム500は、本明細書で説明または図示する機能を提供する。いくつかの特定の実施形態では、1つまたは複数のコンピュータシステム500上で動作するソフトウェアが、本明細書で説明または図示する1つまたは複数の方法の1つまたは複数のステップを実施し、または本明細書で説明または図示する機能を提供する。いくつかの特定の実施形態は、1つまたは複数のコンピュータシステム500の1つまたは複数の部分を含む。
本開示は、任意の適切な数のコンピュータシステム500を企図する。本開示は、任意の適切な物理的形態を取るコンピュータシステム500を企図する。限定ではなく例として、コンピュータシステム500は、組込みコンピュータシステム、システムオンチップ(SOC)、シングルボードコンピュータシステム(SBC)(例えば、コンピュータオンモジュール(COM)やシステムオンモジュール(SOM)など)、デスクトップコンピュータシステム、ラップトップまたはノートブックコンピュータシステム、対話型キオスク、メインフレーム、コンピュータシステムのメッシュ、携帯電話、携帯情報端末(PDA)、サーバ、またはこれらうちの2つ以上の組合せでよい。適切な場合、コンピュータシステム500は、一体型または分散型の、複数の位置にわたる、複数のマシンにわたる、あるいはクラウド内に常駐する、1つまたは複数のコンピュータシステム500を含むことができ、クラウドは、1つまたは複数のネットワーク内の1つまたは複数のクラウド構成要素を含むことができる。適切な場合、1つまたは複数のコンピュータシステム500は、実質的な空間的または時間的な限定なしに、本明細書で説明または図示する1つまたは複数の方法の1つまたは複数のステップを実施することができる。限定ではなく例として、1つまたは複数のコンピュータシステム500は、本明細書で説明または図示する1つまたは複数の方法の1つまたは複数のステップをリアルタイムに、またはバッチモードで実施することができる。適切な場合、1つまたは複数のコンピュータシステム500は、本明細書で説明または図示する1つまたは複数の方法の1つまたは複数のステップを異なる時刻または異なる場所で実施することができる。
いくつかの特定の実施形態では、コンピュータシステム500は、プロセッサ502、メモリ504、ストレージ506、入力/出力(I/O)インターフェース508、通信インターフェース510、およびバス512を含む。本開示は、特定の構成の、特定の数の特定の構成要素を有する特定のコンピュータシステムを説明および図示するが、任意の適切な構成の、任意の適切な数の任意の適切な構成要素を有する任意の適切なコンピュータシステムを企図する。
いくつかの特定の実施形態では、プロセッサ502は、コンピュータプログラムを構成するような命令を実行するハードウェアを含む。限定ではなく例として、命令を実行するために、プロセッサ502は、内部レジスタ、内部キャッシュ、メモリ504、またはストレージ506から命令を取り出し(またはフェッチし)、それを復号化および実行し、次いで内部レジスタ、内部キャッシュ、メモリ504、またはストレージ506に1つまたは複数の結果を書き込むことができる。いくつかの特定の実施形態では、プロセッサ502は、データ、命令、またはアドレスのための1つまたは複数の内部キャッシュを含むことができる。適切な場合、本開示は、任意の適切な数の任意の適切な内部キャッシュを含むプロセッサ502を企図する。限定ではなく例として、プロセッサ502は、1つまたは複数の命令キャッシュ、1つまたは複数のデータキャッシュ、および1つまたは複数のトランスレーションルックアサイドバッファ(TLB)を含むことができる。命令キャッシュ内の命令は、メモリ504またはストレージ506内の命令のコピーでよく、命令キャッシュは、プロセッサ502によるそうした命令の検索を加速することができる。データキャッシュ内のデータは、プロセッサ502で実行中の命令が演算するための、メモリ504またはストレージ506内のデータのコピー、プロセッサ502で実行中の後続の命令がアクセスするための、またはメモリ504またはストレージ506に書き込むための、プロセッサ502で実行された以前の命令の結果、あるいは他の適切なデータでよい。データキャッシュは、プロセッサ502による読取りまたは書込み操作を加速することができる。TLBは、プロセッサ502のための仮想アドレス変換を加速することができる。いくつかの特定の実施形態では、プロセッサ502は、データ、命令、またはアドレスのための1つまたは複数の内部レジスタを含むことができる。適切な場合、本開示は、任意の適切な数の任意の適切な内部レジスタを含むプロセッサ502を企図する。適切な場合、プロセッサ502は、1つまたは複数の演算論理装置(ALU)を含むことができ、マルチコアプロセッサでよく、あるいは1つまたは複数のプロセッサ502を含むことができる。本開示は特定のプロセッサを説明および図示するが、任意の適切なプロセッサを企図する。
いくつかの特定の実施形態では、メモリ504は、プロセッサ502が実行するための命令、またはプロセッサ502が演算するためのデータを格納するメインメモリを含む。限定ではなく例として、コンピュータシステム500は、ストレージ506または別のソース(例えば、別のコンピュータシステム500など)からメモリ504に命令をロードすることができる。次いでプロセッサ502は、メモリ504から内部レジスタまたは内部キャッシュに命令をロードすることができる。命令を実行するために、プロセッサ502は、内部レジスタまたは内部キャッシュから命令を取り出し、それを復号化することができる。命令の実行中、または実行後、プロセッサ502は、1つまたは複数の結果(これは中間結果または最終結果でよい)を内部レジスタまたは内部キャッシュに書き込むことができる。次いでプロセッサ502は、こうした結果のうちの1つまたは複数をメモリ504に書き込むことができる。いくつかの特定の実施形態では、プロセッサ502は、1つまたは複数の内部レジスタまたは内部キャッシュ、あるいは(ストレージ506または別の場所ではなく)メモリ504内の命令だけを実行し、1つまたは複数の内部レジスタまたは内部キャッシュ、あるいは(ストレージ506または別の場所ではなく)メモリ504内のデータだけに対して演算する。1つまたは複数のメモリバス(これはアドレスバスおよびデータバスをそれぞれ含むことができる)が、プロセッサ502をメモリ504に結合することができる。バス512は、以下で説明するように、1つまたは複数のメモリバスを含むことができる。いくつかの特定の実施形態では、1つまたは複数のメモリ管理ユニット(MMU)が、プロセッサ502とメモリ504との間に存在し、プロセッサ502によって要求されるメモリ504へのアクセスを容易にする。いくつかの特定の実施形態では、メモリ504はランダムアクセスメモリ(RAM)を含む。適切な場合、このRAMは揮発性メモリでよい。適切な場合、このRAMはダイナミックRAM(DRAM)またはスタティックRAM(SRAM)でよい。さらに、適切な場合、このRAMはシングルポートRAMまたはマルチポートRAMでよい。本開示は任意の適切なRAMを企図する。適切な場合、メモリ504は、1つまたは複数のメモリ504を含むことができる。本開示は特定のメモリを説明および図示するが、任意の適切なメモリを企図する。
いくつかの特定の実施形態では、ストレージ506は、データまたは命令のためのマスストレージを含む。限定ではなく例として、ストレージ506は、HDD、フロッピィディスクドライブ、フラッシュメモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサルシリアルバス(USB)ドライブ、あるいはこれらのうちの2つ以上の組合せを含むことができる。適切な場合、ストレージ506は、取外し可能または取外し不能(すなわち固定)媒体を含むことができる。適切な場合、ストレージ506は、コンピュータシステム500の内部または外部でよい。いくつかの特定の実施形態では、ストレージ506は不揮発性固体メモリである。いくつかの特定の実施形態では、ストレージ506は読取り専用メモリ(ROM)を含む。適切な場合、このROMは、マスクプログラムされたROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気消去可能PROM(EEPROM)、電気書換え可能ROM(EAROM)、またはフラッシュメモリ、あるいはこれらのうちの2つ以上の組合せでよい。本開示は、任意の適切な物理的形態を取るマスストレージ506を企図する。適切な場合、ストレージ506は、プロセッサ502とストレージ506との間の通信を容易にする1つまたは複数のストレージ制御ユニットを含むことができる。適切な場合、ストレージ506は1つまたは複数のストレージ506を含むことができる。本開示は特定のストレージを説明および図示するが、任意の適切なストレージを企図する。
いくつかの特定の実施形態では、I/Oインターフェース508は、コンピュータシステム500と、1つまたは複数のI/O装置との間の通信のための1つまたは複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。適切な場合、コンピュータシステム500は、これらのI/O装置のうちの1つまたは複数を含むことができる。これらのI/O装置のうちの1つまたは複数は、人とコンピュータシステム500との間の通信を可能にすることができる。限定ではなく例として、I/O装置は、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチルカメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、別の適切なI/O装置、またはこれらのうちの2つ以上の組合せを含むことができる。I/O装置は1つまたは複数のセンサを含むことができる。本開示は、任意の適切なI/O装置、およびそのための任意の適切なI/Oインターフェース508を企図する。適切な場合、I/Oインターフェース508は、プロセッサ502がこれらのI/O装置のうちの1つまたは複数を駆動することを可能にする1つまたは複数の装置またはソフトウェアドライバを含むことができる。適切な場合、I/Oインターフェース508は、1つまたは複数のI/Oインターフェース508を含むことができる。本開示は特定のI/Oインターフェースを説明および図示するが、任意の適切なI/Oインターフェースを企図する。
いくつかの特定の実施形態では、通信インターフェース510は、コンピュータシステム500と、1つまたは複数の他のコンピュータシステム500または1つまたは複数のネットワークとの間の通信(例えば、パケットベースの通信など)のための1つまたは複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく例として、通信インターフェース510は、イーサネット(登録商標)または他のワイヤベースのネットワークと通信するネットワークインターフェースコントローラ(NIC)またはネットワークアダプタ、あるいはWI−FIネットワークなどのワイヤレスネットワークと通信するワイヤレスNIC(WNIC)またはワイヤレスアダプタを含むことができる。本開示は、任意の適切なネットワーク、およびそのための任意の適切な通信インターフェース510を企図する。限定ではなく例として、コンピュータシステム500は、アドホックネットワーク、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、大都市圏ネットワーク(MAN)、またはインターネットのうちの1つもしくは複数の部分、あるいはこれらのうちの2つ以上の組合せと通信することができる。これらのネットワークのうちの1つまたは複数の1つまたは複数の部分は、ワイヤードまたはワイヤレスでよい。一例を挙げると、コンピュータシステム500は、ワイヤレスPAN(WPAN)(例えば、BLUETOOTH(登録商標) WPANなど)、WI−FIネットワーク、WI−MAXネットワーク、セルラ電話ネットワーク(例えば、Global System for Mobile Communications (GSM(登録商標))ネットワークなど)、または他の適切なワイヤレスネットワーク、あるいはこれらのうちの2つ以上の組合せと通信することができる。適切な場合、コンピュータシステム500は、これらのネットワークのいずれかのための任意の適切な通信インターフェース510を含むことができる。適切な場合、通信インターフェース510は、1つまたは複数の通信インターフェース510を含むことができる。本開示は特定のI/Oインターフェースを説明および図示するが、任意の適切な通信インターフェースを企図する。
いくつかの特定の実施形態では、バス512は、コンピュータシステム500の構成要素を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく例として、バス512は、アクセラレーテッドグラフィックスポート(AGP)または他のグラフィックスバス、Enhanced Industry Standard Architecture(EISA)バス、front−sideバス(FSB)、HYPERTRANSPORT(HT)相互接続、Industry Standard Architecture(ISA)バス、INFINIBAND相互接続、low−pin−count(LPC)バス、メモリバス、Micro Channel Architecture(MCA)バス、Peripheral Component Interconnect(PCI)バス、PCI−Express(PCIe)バス、serial advanced technology attachment(SATA)バス、Video Electronics Standards Associationローカル(VLB)バス、または別の適切なバス、あるいはこれらのうちの2つ以上の組合せを含むことができる。適切な場合、バス512は1つまたは複数のバス512を含むことができる。本開示は特定のバスを説明および図示するが、任意の適切なバスまたは相互接続を企図する。
本明細書では、適切な場合、コンピュータ読み取り可能で非一時的な記憶媒体に対する参照は、半導体ベースの、または他の集積回路(IC)(例えば、フィールドプログラマブルゲートアレイ(FPGA)や特定用途向けIC(ASIC)など)、ハードディスクドライブ(「HDD」)、ハイブリッドハードドライブ(HHD)、光ディスク、光ディスクドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピィディスク、フロッピィディスクドライブ(FDD)、磁気テープ、ホログラフィック記憶媒体、固体ドライブ(SSD)、RAMドライブ、セキュアデジタルカード、セキュアデジタルドライブ、または別の適切なコンピュータ読み取り可能で非一時的な記憶媒体、あるいはこれらの適切な組合せを含むことができる。本開示は、任意の適切なストレージを実装する1つまたは複数のコンピュータ読み取り可能な記憶媒体を企図する。適切な場合、いくつかの特定の実施形態では、コンピュータ読み取り可能な記憶媒体は、プロセッサ502の1つまたは複数の部分(例えば、1つまたは複数の内部レジスタやキャッシュなど)、メモリ504の1つまたは複数の部分、ストレージ506の1つまたは複数の部分、またはそれらの組合せを実装する。いくつかの特定の実施形態では、コンピュータ読み取り可能な記憶媒体はRAMまたはROMを実装する。いくつかの特定の実施形態では、コンピュータ読み取り可能な記憶媒体は、揮発性または永続性メモリを実装する。いくつかの特定の実施形態では、1つまたは複数のコンピュータ読み取り可能な記憶媒体はソフトウェアを実施する。本明細書では、適切な場合、ソフトウェアに対する参照は、1つまたは複数のアプリケーション、バイトコード、1つまたは複数のコンピュータプログラム、1つまたは複数の実行ファイル、1つまたは複数の命令、ロジック、マシンコード、1つまたは複数のスクリプト、あるいはソースコードを包含することができ、逆も同様である。いくつかの特定の実施形態では、ソフトウェアは1つまたは複数のアプリケーションプログラミングインターフェース(API)を含む。本開示は、任意の適切なプログラミング言語またはプログラミング言語の組合せで書かれ、あるいは表現される任意の適切なソフトウェアを企図する。いくつかの特定の実施形態では、ソフトウェアは、ソースコードまたはオブジェクトコードとして表現される。いくつかの特定の実施形態では、ソフトウェアは、例えばC、Perl、またはそれらの適切な拡張などの高水準プログラミング言語で表現される。いくつかの特定の実施形態では、ソフトウェアは、アセンブリ言語(またはマシンコード)などの低水準プログラミング言語で表現される。いくつかの特定の実施形態では、ソフトウェアは、JAVA(登録商標)、C、またはC++で表現される。いくつかの特定の実施形態では、ソフトウェアは、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)、または他の適切なマークアップ言語で表現される。
本明細書では、適切な場合、コンピュータ読み取り可能で非一時的な記憶媒体は、1つまたは複数の半導体ベースのまたは他の集積回路(IC)(例えば、フィールドプログラマブルゲートアレイ(FPGA)や特定用途向けIC(ASIC)など)、ハードディスクドライブ(HDD)、ハイブリッドハードドライブ(HHD)、光ディスク、光ディスクドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピィディスケット、フロッピィディスクドライブ(FDD)、磁気テープ、ソリッドステートドライブ(SSD)、RAMドライブ、セキュアデジタルカードまたはドライブ、任意の他の適切なコンピュータ読み取り可能で非一時的な記憶媒体、あるいはこれらのうちの2つ以上の任意の適切な組合せを含むことができる。適切な場合、コンピュータ読み取り可能で非一時的な記憶媒体は、揮発性、不揮発性、または揮発性と不揮発性の組合せでよい。
本明細書では、別段に明記されていない限り、または文脈によって示されていない限り、「または」は排他的ではなく包含的である。したがって、本明細書では、別段に明記されていない限り、または文脈によって示されていない限り、「AまたはB」は「A、B、またはその両方」を意味する。さらに、別段に明記されていない限り、または文脈によって示されていない限り、「および」は共同の(joint)および個別の(several)の両方である。したがって、本明細書では、別段に明記されていない限り、または文脈によって示されていない限り、「AおよびB」は、「AおよびBが共同で、または個別に」を意味する。
本開示は、当業者が理解する、本明細書の例示的実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。さらに、本開示は、本明細書のそれぞれの実施形態が特定の構成要素、要素、機能、動作、またはステップを含むものとして説明および図示するが、これらの実施形態のいずれかは、当業者が理解する、本明細書のいずれかの場所で説明または図示した構成要素、要素、機能、動作、またはステップのいずれかの任意の組合せまたは並べ替えを含むことができる。さらに、添付の特許請求の範囲内の特定の機能を実施するように適合され、配置され、実施することが可能であり、実施するように構成され、実施することが可能にされ、実施するように動作可能であり、または動作する装置またはシステム、あるいは装置またはシステムの構成要素に対する参照は、装置、システム、構成要素またはその特定の機能が活動化され、オンにされ、またはロック解除されるか否かに関わらず、その装置、システム、または構成要素がそのように適合され、配置され、可能であり、構成され、可能にされ、動作可能であり、または動作する限り、その装置、システム、構成要素を包含する。

Claims (20)

  1. オンラインソーシャルネットワークの一つまたは複数のコンピューティングシステムによる方法であって、
    サードパーティシステムから、ソーシャルネットワーキングシステムと関連する一つまたは複数の階層型グラフから取り出すべき一つまたは複数のデータ項目を要求するデータ照会を受信することであって、複数の階層型グラフの各々は、一つまたは複数のノードを含み、一つまたは複数のノードは、一つまたは複数のデータ項目をそれぞれ表し、複数のデータ項目の各々は、複数のデータタイプのうちの特定の一つのタイプを有し、前記データ照会は、要求されたデータ項目の特定のデータタイプのデータ構造と対応している、前記データ照会を受信すること、
    一つまたは複数の要求されたデータ項目の各々に関して、要求されたデータ項目に関するプライバシー設定に基づいてサードパーティシステムがデータ項目にアクセスすることが許可されているかどうかを判定すること、
    判定に基づいて、サードパーティシステムがアクセスすることが許可されている前記一つまたは複数のデータ項目の各々を取り出すこと、
    前記データ照会に応答してサードパーティシステムに一つまたは複数の許可されたデータ項目の各々を送信すること
    を含む方法。
  2. 取り出されたデータ項目は、Java(登録商標) Script Object Notation(JSON)フォーマットで表現される、請求項1に記載の方法。
  3. サードパーティシステムがアクセスすることが許可されている前記一つまたは複数のデータ項目の各々を取り出すことは、
    一つまたは複数のデータ項目をそれぞれ表す一つまたは複数のノードを識別することであって、各識別されたノードは、前記データ照会によって要求されたデータ項目を表すとともに、サードパーティシステムに対してアクセスを許可するプライバシー設定を有する、前記一つまたは複数のノードを識別すること、
    個々のノードに基づいてノードの階層型グラフから識別されたデータ項目を取り出すこと
    を含む、請求項1に記載の方法。
  4. データタイプは、階層データ構造を有する、請求項1に記載の方法。
  5. サードパーティシステムから、ソーシャルネットワーキングシステムと関連する一つまたは複数の階層型グラフから取り出すべき特定のデータタイプのデータ構造を要求する内観的照会を受信すること、
    前記内観的照会を用いて特定のデータタイプのデータ構造を取り出すこと
    を更に含む、請求項1に記載の方法。
  6. 取り出されたデータ項目の各々を検証することをさらに含む、請求項5に記載の方法。
  7. 取り出されたデータ項目の各々を検証することは、各取り出されたデータ項目に関して、
    取り出されたデータ項目の各々がデータ構造に対応しているかどうかを判定すること、
    取り出されたデータ項目が取り出されたデータ構造と対応しなかった場合、取り出されたデータ項目を廃棄すること
    をさらに含む、請求項6に記載の方法。
  8. 取り出されたデータ項目を検証することは、再帰的構文解析アルゴリズムを用いて行われる、請求項7に記載の方法。
  9. 特定のデータタイプの取り出されたデータ構造は、(1)特定のデータタイプの名前および説明、および(2)取り出されたデータ構造の一つまたは複数のフィールドの各々に対するフィールドの名前および説明を含む、請求項5に記載の方法。
  10. API呼出しにより一つまたは複数の階層型グラフにアクセスすることをさらに含む請求項1に記載の方法。
  11. 階層型グラフは、ソーシャルネットワーキングシステムによって生成されたデータの表現を含む、請求項1に記載の方法。
  12. 一つまたは複数のデータ項目は、プライバシー設定と関連付けされていない、請求項1に記載の方法。
  13. 各データ項目は、データ項目に対して指定された特定のプライバシー設定と関連付けされている、請求項1に記載の方法。
  14. 特定のデータ項目に関連付けされたプライバシー設定は、特定のデータ項目の作者によって指定される、請求項1に記載の方法。
  15. 特定のデータ項目の作者は、ソーシャルネットワーキングシステムの特定のユーザであり、特定のユーザがデータ項目をソーシャルネットワーキングシステムにアップロードする、請求項14に記載の方法。
  16. 特定のデータ項目の作者は、ソーシャルネットワーキングシステムのアドミニストレイターである、請求項14に記載の方法。
  17. ソフトウェアを実装する一つまたは複数のコンピュータ読み取り可能で非一時的な記憶媒体であって、前記ソフトウェアは、実行時に
    サードパーティシステムから、ソーシャルネットワーキングシステムと関連する一つまたは複数の階層型グラフから取り出すべき一つまたは複数のデータ項目を要求するデータ照会を受信することであって、複数の階層型グラフの各々は、一つまたは複数のノードを含み、一つまたは複数のノードは、一つまたは複数のデータ項目をそれぞれ表し、複数のデータ項目の各々は、複数のデータタイプのうちの特定の一つのタイプを有し、前記データ照会は、要求されたデータ項目の特定のデータタイプのデータ構造と対応している、前記データ照会を受信すること、
    一つまたは複数の要求されたデータ項目の各々に関して、要求されたデータ項目に関するプライバシー設定に基づいてサードパーティシステムがデータ項目にアクセスすることが許可されているかどうかを判定すること、
    判定に基づいて、サードパーティシステムがアクセスすることが許可されている前記一つまたは複数のデータ項目の各々を取り出すこと、
    前記データ照会に応答してサードパーティシステムに一つまたは複数の許可されたデータ項目の各々を送信すること
    を行うように動作可能である、記憶媒体。
  18. サードパーティシステムがアクセスすることが許可されている前記一つまたは複数のデータ項目の各々を取り出すことは、
    一つまたは複数のデータ項目をそれぞれ表す一つまたは複数のノードを識別することであって、各識別されたノードは、前記データ照会によって要求されたデータ項目を表すとともに、サードパーティシステムに対してアクセスを許可するプライバシー設定を有する、前記一つまたは複数のノードを識別すること、
    個々のノードに基づいてノードの階層型グラフから識別されたデータ項目を取り出すこと
    を含む、請求項17に記載の記憶媒体。
  19. システムであって、
    一つまたは複数のプロセッサと、
    前記一つまたは複数のプロセッサに接続され、一つまたは複数のプロセッサによって実行可能な命令を含むメモリとを備え、
    前記一つまたは複数のプロセッサは、前記命令の実行時に
    サードパーティシステムから、ソーシャルネットワーキングシステムと関連する一つまたは複数の階層型グラフから取り出すべき一つまたは複数のデータ項目を要求するデータ照会を受信することであって、複数の階層型グラフの各々は、一つまたは複数のノードを含み、一つまたは複数のノードは、一つまたは複数のデータ項目をそれぞれ表し、複数のデータ項目の各々は、複数のデータタイプのうちの特定の一つのタイプを有し、前記データ照会は、要求されたデータ項目の特定のデータタイプのデータ構造と対応している、前記データ照会を受信すること、
    一つまたは複数の要求されたデータ項目の各々に関して、要求されたデータ項目に関するプライバシー設定に基づいてサードパーティシステムがデータ項目にアクセスすることが許可されているかどうかを判定すること、
    判定に基づいて、サードパーティシステムがアクセスすることが許可されている前記一つまたは複数のデータ項目の各々を取り出すこと、
    前記データ照会に応答してサードパーティシステムに一つまたは複数の許可されたデータ項目の各々を送信すること
    を行うように動作可能である、システム。
  20. サードパーティシステムがアクセスすることが許可されている前記一つまたは複数のデータ項目の各々を取り出すことは、
    一つまたは複数のデータ項目をそれぞれ表す一つまたは複数のノードを識別することであって、各識別されたノードは、前記データ照会によって要求されたデータ項目を表すとともに、サードパーティシステムに対してアクセスを許可するプライバシー設定を有する、前記一つまたは複数のノードを識別すること、
    個々のノードに基づいてノードの階層型グラフから識別されたデータ項目を取り出すこと
    を含む、請求項19に記載のシステム。
JP2016206779A 2012-08-31 2016-10-21 照会スキーマに基づくapiバージョン検査 Active JP6280971B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/601,815 US9015733B2 (en) 2012-08-31 2012-08-31 API version testing based on query schema
US13/601,815 2012-08-31

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016018914A Division JP6031203B2 (ja) 2012-08-31 2016-02-03 照会スキーマに基づくapiバージョン検査

Publications (2)

Publication Number Publication Date
JP2017059244A true JP2017059244A (ja) 2017-03-23
JP6280971B2 JP6280971B2 (ja) 2018-02-14

Family

ID=50184268

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2015529969A Active JP5882545B2 (ja) 2012-08-31 2013-08-28 照会スキーマに基づくapiバージョン検査の方法、記憶媒体、システム
JP2016018914A Expired - Fee Related JP6031203B2 (ja) 2012-08-31 2016-02-03 照会スキーマに基づくapiバージョン検査
JP2016206779A Active JP6280971B2 (ja) 2012-08-31 2016-10-21 照会スキーマに基づくapiバージョン検査

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2015529969A Active JP5882545B2 (ja) 2012-08-31 2013-08-28 照会スキーマに基づくapiバージョン検査の方法、記憶媒体、システム
JP2016018914A Expired - Fee Related JP6031203B2 (ja) 2012-08-31 2016-02-03 照会スキーマに基づくapiバージョン検査

Country Status (7)

Country Link
US (3) US9015733B2 (ja)
JP (3) JP5882545B2 (ja)
KR (3) KR101761229B1 (ja)
AU (6) AU2013308886B2 (ja)
CA (3) CA2955023A1 (ja)
IL (3) IL237336A0 (ja)
WO (1) WO2014036055A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9646028B2 (en) 2012-08-31 2017-05-09 Facebook, Inc. Graph query logic
US9323587B2 (en) * 2012-09-27 2016-04-26 National Taiwan University Method and system for automatic detecting and resolving APIs
US10324826B2 (en) * 2013-02-12 2019-06-18 Focus IP Inc. Developer channel compliance
US9213726B2 (en) * 2013-04-15 2015-12-15 Amazon Technologies, Inc. Database cost tracing and analysis
US9910887B2 (en) 2013-04-25 2018-03-06 Facebook, Inc. Variable search query vertical access
US9223898B2 (en) 2013-05-08 2015-12-29 Facebook, Inc. Filtering suggested structured queries on online social networks
US10599953B2 (en) 2014-08-27 2020-03-24 Verint Americas Inc. Method and system for generating and correcting classification models
US10277462B1 (en) 2015-08-25 2019-04-30 Amdocs Development Limited System, method, and computer program for maintaining versioning of web services associated with a plurality of independent sub-organizations
US9881054B2 (en) 2015-09-30 2018-01-30 International Business Machines Corporation System and method of query processing with schema change in JSON document store
US10002069B2 (en) * 2016-09-23 2018-06-19 International Business Machines Corporation Automated testing of application program interface
US10614057B2 (en) 2016-11-04 2020-04-07 Microsoft Technology Licensing, Llc Shared processing of rulesets for isolated collections of resources and relationships
US10452672B2 (en) 2016-11-04 2019-10-22 Microsoft Technology Licensing, Llc Enriching data in an isolated collection of resources and relationships
US10481960B2 (en) 2016-11-04 2019-11-19 Microsoft Technology Licensing, Llc Ingress and egress of data using callback notifications
US11475320B2 (en) 2016-11-04 2022-10-18 Microsoft Technology Licensing, Llc Contextual analysis of isolated collections based on differential ontologies
US10402408B2 (en) 2016-11-04 2019-09-03 Microsoft Technology Licensing, Llc Versioning of inferred data in an enriched isolated collection of resources and relationships
US10885114B2 (en) 2016-11-04 2021-01-05 Microsoft Technology Licensing, Llc Dynamic entity model generation from graph data
US10796350B2 (en) * 2017-09-25 2020-10-06 Oracle International Corporation Systems and methods for using facade API for phased upgrade of core API
US10963514B2 (en) 2017-11-30 2021-03-30 Facebook, Inc. Using related mentions to enhance link probability on online social networks
US10129705B1 (en) 2017-12-11 2018-11-13 Facebook, Inc. Location prediction using wireless signals on online social networks
US11604968B2 (en) 2017-12-11 2023-03-14 Meta Platforms, Inc. Prediction of next place visits on online social networks
US10902016B2 (en) 2018-02-12 2021-01-26 Artem Shamsutdinov Autonomous interdependent repositories
US11741084B2 (en) * 2019-09-27 2023-08-29 Autodesk, Inc. High frequency data management (HFDM)
JP7463988B2 (ja) 2021-03-11 2024-04-09 株式会社豊田自動織機 クランクプーリー
CN114253788B (zh) * 2021-11-03 2023-04-28 北京云宽志业网络技术有限公司 接口验证方法、装置、存储介质及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007079872A (ja) * 2005-09-13 2007-03-29 Koji Sano データ管理装置およびデータ管理方法
JP2008140174A (ja) * 2006-12-01 2008-06-19 Tmf Create:Kk コミュニケーションサービスシステム
US20110282944A1 (en) * 2010-05-13 2011-11-17 Broadvision Systems and methods for content sharing across enterprise social networks
US20120084666A1 (en) * 2010-09-30 2012-04-05 Google Inc. Composition of customized presentations associated with a social media application
US20130268483A1 (en) * 2012-04-06 2013-10-10 Sony Corporation Information processing apparatus, information processing method, and computer program

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5201046A (en) 1990-06-22 1993-04-06 Xidak, Inc. Relational database management system and method for storing, retrieving and modifying directed graph data structures
US5970496A (en) 1996-09-12 1999-10-19 Microsoft Corporation Method and system for storing information in a computer system memory using hierarchical data node relationships
US6377953B1 (en) 1998-12-30 2002-04-23 Oracle Corporation Database having an integrated transformation engine using pickling and unpickling of data
US6571232B1 (en) 1999-11-01 2003-05-27 Sun Microsystems, Inc. System and method for browsing database schema information
EP1324216A1 (en) 2001-12-28 2003-07-02 Deutsche Thomson-Brandt Gmbh Machine for classification of metadata
US9043365B2 (en) 2002-02-26 2015-05-26 International Business Machines Corporation Peer to peer (P2P) federated concept queries
WO2005024568A2 (en) * 2003-08-19 2005-03-17 General Dynamics Advanced Information Systems, Inc. Trusted interface unit (tiu) and method of making and using the same
US7676395B2 (en) * 2003-10-14 2010-03-09 Compucredit Intellectual Property Holdings Corp. Ii On-us cash withdrawal at a point-of-sale
WO2005052759A2 (en) * 2003-11-24 2005-06-09 Ebay Inc. Business language schema design framework
US7844639B2 (en) * 2003-11-24 2010-11-30 Ebay Inc. Backward compatibility in database schemas
US7694315B2 (en) 2004-02-13 2010-04-06 Microsoft Corporation Schema-based machine generated programming models
US7496912B2 (en) * 2004-02-27 2009-02-24 International Business Machines Corporation Methods and arrangements for ordering changes in computing systems
JP2006260053A (ja) * 2005-03-16 2006-09-28 Mitsubishi Electric Corp 特定サブルーチン検索システムおよびこれに用いるプログラム
US7512633B2 (en) 2005-07-13 2009-03-31 International Business Machines Corporation Conversion of hierarchically-structured HL7 specifications to relational databases
US20070136193A1 (en) * 2005-12-13 2007-06-14 Bellsouth Intellectual Property Corporation Methods, transactional cards, and systems using account identifers customized by the account holder
US7702685B2 (en) 2006-01-20 2010-04-20 Microsoft Corporation Querying social networks
US20080016023A1 (en) 2006-07-17 2008-01-17 The Mathworks, Inc. Storing and loading data in an array-based computing environment
US20080028375A1 (en) * 2006-07-26 2008-01-31 International Business Machines Corporation Validator-driven architecture of an xml parsing and validating solution
US8769275B2 (en) * 2006-10-17 2014-07-01 Verifone, Inc. Batch settlement transactions system and method
JP2008102736A (ja) * 2006-10-19 2008-05-01 Toshiba Corp 検索装置および検索方法
US8646095B2 (en) * 2006-11-30 2014-02-04 Microsoft Corporation Personal site privacy policy
US8769485B2 (en) * 2006-12-04 2014-07-01 Tibco Software, Inc. Data parallelism and parallel operations in stream processing
JP2008171181A (ja) * 2007-01-11 2008-07-24 Toshiba Corp 構造化データ検索装置
US20090024590A1 (en) 2007-03-15 2009-01-22 Sturge Timothy User contributed knowledge database
WO2008113106A1 (en) 2007-03-16 2008-09-25 Travel Who Pty Limited An internet mediated booking and distribution system
US8005848B2 (en) 2007-06-28 2011-08-23 Microsoft Corporation Streamlined declarative parsing
US7958154B2 (en) 2007-08-29 2011-06-07 International Business Machines Corporation Apparatus, system, and method for command manager support for pluggable data formats
CN101571863B (zh) 2008-04-29 2012-03-28 国际商业机器公司 用于可变模式的xml文档的xml查询方法和系统
US20090313270A1 (en) 2008-06-17 2009-12-17 Microsoft Corporation Semantic frame store
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US8321834B2 (en) * 2008-09-25 2012-11-27 International Business Machines Corporation Framework for automatically merging customizations to structured code that has been refactored
JP4703705B2 (ja) * 2008-10-02 2011-06-15 株式会社東芝 構造化データ検索プログラム及び構造化データ検索装置
JP2010128713A (ja) * 2008-11-26 2010-06-10 Ripplex Inc ネットワークサービスを利用する利用者間の関係を提供するためのサーバ
US9141663B2 (en) 2008-12-15 2015-09-22 Rockwell Automation Technologies, Inc. User interface and methods for building structural queries
US20100241644A1 (en) 2009-03-19 2010-09-23 Microsoft Corporation Graph queries of information in relational database
WO2010135696A1 (en) * 2009-05-21 2010-11-25 Salesforce.Com, Inc. System, method and computer program product for versioning components of an application
US8195691B2 (en) 2009-12-18 2012-06-05 Microsoft Corporation Query-based tree formation
US8341193B2 (en) * 2010-01-12 2012-12-25 Microsoft Corporation Data versioning through data transformations
US8250145B2 (en) * 2010-04-21 2012-08-21 Facebook, Inc. Personalizing a web page outside of a social networking system with content from the social networking system
US20120110560A1 (en) * 2010-10-27 2012-05-03 Microsoft Corporation Data type provider for a web semantic store
US9183307B2 (en) * 2010-12-15 2015-11-10 Facebook, Inc. Comment ordering system
US10146777B2 (en) 2011-05-25 2018-12-04 Facebook, Inc. Synchronous display of personal and contact-shared contact information
US9443070B2 (en) * 2012-04-04 2016-09-13 Intelmate Llc Secure social network
US20140067781A1 (en) 2012-08-31 2014-03-06 Scott W. Wolchok Graph Query Language API Querying and Parsing
US9646028B2 (en) 2012-08-31 2017-05-09 Facebook, Inc. Graph query logic

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007079872A (ja) * 2005-09-13 2007-03-29 Koji Sano データ管理装置およびデータ管理方法
JP2008140174A (ja) * 2006-12-01 2008-06-19 Tmf Create:Kk コミュニケーションサービスシステム
US20110282944A1 (en) * 2010-05-13 2011-11-17 Broadvision Systems and methods for content sharing across enterprise social networks
US20120084666A1 (en) * 2010-09-30 2012-04-05 Google Inc. Composition of customized presentations associated with a social media application
JP2013544387A (ja) * 2010-09-30 2013-12-12 グーグル インコーポレイテッド ソーシャルメディアアプリケーションと関連付けられたカスタマイズ表示の複合
US20130268483A1 (en) * 2012-04-06 2013-10-10 Sony Corporation Information processing apparatus, information processing method, and computer program
JP2013218462A (ja) * 2012-04-06 2013-10-24 Sony Corp 情報処理装置、情報処理方法及びコンピュータプログラム

Also Published As

Publication number Publication date
US20140068639A1 (en) 2014-03-06
AU2015207847A1 (en) 2015-08-20
US9015733B2 (en) 2015-04-21
JP6031203B2 (ja) 2016-11-24
CA2882379A1 (en) 2014-03-06
IL249678A0 (en) 2017-02-28
AU2017202661B2 (en) 2018-11-08
JP5882545B2 (ja) 2016-03-09
US20150161215A1 (en) 2015-06-11
CA2882379C (en) 2015-11-10
US9400822B2 (en) 2016-07-26
WO2014036055A1 (en) 2014-03-06
JP6280971B2 (ja) 2018-02-14
KR101594406B1 (ko) 2016-02-16
CA2955023A1 (en) 2014-03-06
AU2015207845A1 (en) 2015-08-20
KR20170085149A (ko) 2017-07-21
AU2013308886B2 (en) 2015-04-30
IL240044A (en) 2017-01-31
AU2015207845B2 (en) 2017-01-19
IL240044A0 (en) 2015-08-31
AU2019200848A1 (en) 2019-02-28
CA2901695A1 (en) 2014-03-06
KR20150040383A (ko) 2015-04-14
AU2017200892B2 (en) 2018-05-31
KR101761229B1 (ko) 2017-07-25
US20160306990A1 (en) 2016-10-20
CA2901695C (en) 2017-02-28
KR20160014782A (ko) 2016-02-11
AU2013308886A1 (en) 2015-03-12
AU2017202661A1 (en) 2017-05-11
AU2017200892A1 (en) 2017-02-23
JP2015531942A (ja) 2015-11-05
JP2016085758A (ja) 2016-05-19
IL237336A0 (en) 2015-04-30

Similar Documents

Publication Publication Date Title
JP6498735B2 (ja) グラフ照会ロジック
JP6280971B2 (ja) 照会スキーマに基づくapiバージョン検査
JP6298821B2 (ja) グラフ照会言語api照会および構文解析

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171211

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180122

R150 Certificate of patent or registration of utility model

Ref document number: 6280971

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250