2

個人が属するクラスを取得したい。より詳細には、Pythonを使用して(rdflibを使用して)個体であるメソッドにパラメーターを渡したいのですが、メソッドはそれが属する個体のクラスを返す必要があります。

例: 私は、AlcoholicBeverage クラスを持っています。このクラスにはサブクラス Beer があり、Beer クラスにはサブクラス Brands があります。Brands クラスには、ビールのブランドを代表する多くの個人がいます。パラメータをメソッドに渡したいのですが、SPARQL クエリを実行して検索します。xyz は Brands クラスの個体です。

理想的には、xyz はビール (Brands クラスは Beer のサブクラスであるため) であり、Beer はアルコール飲料です。

ご協力いただきありがとうございます。

4

1 に答える 1

3

どうですか:

SELECT ?class WHERE { xyz a ?class . }

aは省略形であることに注意してくださいrdf:type- SPARQL 仕様のセクション 4.2.4を参照してください。

スーパークラス (AlcoholicBeverage、Beer) が RDF モデルに明示的に追加されている場合、または推論が有効になっている場合(およびスキーマがモデルにロードされている場合) にのみ、このクエリからスーパークラス (AlcoholicBeverage、Beer) を取得し、それらが暗黙的に追加されるようにします。

あなたのスキーマは少し奇妙です - ビールは明らかにアルコール飲料のサブクラスですが、ブランドとは何ですか? 各ブランドを Beer のサブクラスにするか (「この飲み物はビールの一種であるOld Peculierです」というように、個々の飲み物が実際の物理的な飲み物であることを暗示します)、または各ブランドを Beer の個々のブランドにしないでください: " Old Peculierはたとえばビール」。ブランドは、正式なスキーマでは意味をなさない一種の非公式のプレースホルダーのように見えますか? 他のクラス名が単数形であるのに、Brands が複数形なのはなぜですか?

于 2012-11-12T19:44:45.443 に答える