正しい形式を生成する正しいSPARQLクエリを作成するのに苦労しているので、Protegeを開くことができます。私たちのオントロジはカクテルに関するもので、材料(dbp:ingredients
)とレシピ(dbp:prep
)を含め、データベースにDBPediaのカクテルをすべて載せたいと考えています。データベースでカクテルを入手するのはうまくいくが、成分とレシピはうまくいかない。 ??私は今、次のクエリがあります。今宣言されていないSPARQLのクエリとしてのリテラルCONSTRUCTクエリ
CONSTRUCT {?drink dct:subject ?category.
?drink dbp:prep ?recipe.
?drink dbp:ingredients ?ingredients.
?drink rdf:type owl:NamedIndividual .
?category rdf:type owl:Class.
dct:subject rdf:type owl:ObjectProperty.
dbp:prep rdf:type owl:ObjectProperty.
dbp:ingredient rdf:type owl:Objectproperty.
}
WHERE {
?drink dct:subject ?category.
?drink dbp:prep ?recipe.
?drink dbp:ingredients ?ingredients.}
ので、食材やレシピを、それが門徒における個人]タブに表示されません。私は、クエリの構築物の部分にこれを追加するときしかし:
?recipe rdf:type owl:NamedIndividual.
?ingredients rdf:type owl:NamedIndividual.
私はエラーを取得する:
Virtuoso RDF01 Error Bad variable value in CONSTRUCT: "*5 cL vodka *10 cL orange juice" (tag 246 box flags 0) is not a valid subject, only object of a triple can be a literal
DBpediaの上の準備や食材は単なる文字列、なしリンクされたデータですので、私は思います。 しかし、Protegeでこの作業を行うにはどうしたらいいですか?
を持つことになり、リテラルは被験者することはできません。オブジェクトプロパティではなくデータプロパティを宣言し、それぞれのリテラルに値を設定する必要があります。オブジェクトを抽出するためにこれらのリテラルを解析するのは難しいようです。おそらく、Wikidataにカクテルに関するより構造化された情報を問い合わせることができます(テキスト記述を保持したい場合は、DBpediaへの連合クエリを使用します)。 BTW:https://stackoverflow.com/a/44227937/7879193 –
したがって、浮動小数点数としてリテラルを宣言することは不可能です:NamedIndividual?または、クエリ内のリテラルを変換する方法があれば可能でしょうか? –
IRIは 'owl:NamedIndividual'の一意の識別子として使用されます。 – AKSW