セマンティックウェブはさまざまなコンポーネントで構成されています。
知識はRDFトリプルで表されます。これらのトリプルは、サブジェクト - 述語 - オブジェクト構文に基づいてリソースを記述します。例えば、"John is a Male"
は、RDFトリプルとして表すことができます。
RDFの上には、RDFSとOWLを使用して、これらのデータに関する制限やその他の情報を指定することができます。 RDFSのおかげで、私は"Male is a subclass of Person"
と指定することができます。したがって、"John is a Person"
を推測することができます。 RDFSとOWLは、オントロジーの定義に役立ちます。 オントロジーは、データを表すための語彙(一般的またはドメイン固有のもの)です。例えば、私はネコのデータを表現するためにオントロジーCATを作成したいと思うかもしれません。
その場合、"Cat is a subclass of Animal"
と"hasOwner is a property that links a cat to a Person"
と他のいくつかのプロパティを定義するCATボキャブラリを作成します。それから、私はいくつかの個体をインスタンス化して、猫のデータを作成することができます。たとえば、"Baccara is a Cat"
と"Baccara hasOwner John"
と言ってください。
FOAFは、基本的に人に関するデータ、特にこれらの人々の間のリンクを表現するための語彙です。 FOAFの語彙は、人々の情報を簡単に扱うためのプロパティとクラスを提供します。しかし、情報を提供するのではなく、情報を整理するための "構造"/"モデル"/"スキーマ"のみを提供します。 FOAFデータセットには個人が存在しません。そのため、クエリは結果を返しません。 FOAFデータセットには人がいないので、クエリは何も返しません。
FOAFボキャブラリに基づいて独自のRDFデータセットを構築することができます。これを行うには、Protégéのようなツールを試してみるか、RDF/XMLやTurtleをよく知っていればテキストエディタで簡単に試してみてください。
FOAFに精通している必要がある場合は、モデルをクエリできます。たとえば、エージェントのすべてのサブクラスを取得したいことがあります。
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT distinct ?c
WHERE { ?c rdfs:subClassOf foaf:Agent }
私はFOAFで先に進む前に、セマンティックWebコンポーネント(特にRDFとRDFS、およびそれらの間の差異)のビットを読むことをお勧めします。さらに、SPARQLを学ぶための素晴らしいエクササイズは、DBpedia:http://dbpedia.org/sparqlを照会することです。
ナレッジベースのクエリを実行しますか? FOAFオントロジー自体は単なるスキーマです。 – AKSW
私はVirtuoso SPARQLクエリエディタを使いました。私はhttp://xmlns.com/foaf/0.1/をデフォルトデータセットに入れました。私が間違っている ? @AKSW – Dihya
私の見解では、FOAFの語彙だけを読み込んでいますが、インスタンスデータは読み込んでいません。 – AKSW