私は、RDFのオントロジーから特定のプロパティとラベルを抽出するSPARQLクエリを作成しようとしています。私はPython 2.7(OS:Ubuntu 16.04,64ビット)でrdflib 4.2.2を使用しています。これによりSPARQL 1.1でクエリを実行できます。オントロジーは人体の解剖学的構造であり、すべての器官は独自のクラスを持っています。これらの器官がスーパークラスを有し、ラベルを有するhasRelatedSynonym
およびsomeValuesFrom
のような追加の特性を有するように編成される。ここではオントロジーのサンプル、クラス制限およびプロパティを持つ単一のクラスである:クラスのいくつかは、私が使用しようとした理由である単一のプロパティに複数の値を持つ制約を、SPARQL集約クエリが機能しない
<owl:Class rdf:about="http://human.owl#NCI_C12832">
<rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Conus_Medullaris</rdfs:label>
<rdfs:subClassOf rdf:resource="http://human.owl#NCI_C33969"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="http://human.owl#UNDEFINED_part_of"/>
<owl:someValuesFrom rdf:resource="http://human.owl#NCI_C12464"/>
</owl:Restriction>
</rdfs:subClassOf>
<oboInOwl:hasRelatedSynonym rdf:resource="http://human.owl#genid5111"/>
ていgroup_concat
ある行のクラスに関するすべての関連情報を得るために、これらの値をすべて1行に取得する必要があります。
これは私が実行しようとしているクエリです:
querytrial4=graph.query("""SELECT ?node ?nodeLabel ?superclass ?superclassLabel (group_concat(DISTINCT ?node2) as ?node2s) (group_concat(DISTINCT ?node2Label) as ?node2Labels) where {
?node rdf:type owl:Class .
?node rdfs:subClassOf ?superclass .
OPTIONAL {
?node rdfs:subClassOf ?restriction .
?restriction a owl:Restriction .
?restriction owl:someValuesFrom ?node2 .
?node2 rdfs:label ?node2Label }
?node rdfs:label ?nodeLabel .
?superclass rdfs:label ?superclassLabel .
}
group by ?node ?nodeLabel ?superclass ?superclassLabel ?node2 ?
node2Label
LIMIT 10""")
rdf4jのフォーラムで、いくつかの貢献者によって示唆されるように、私が原因ではないすべての、OPTIONAL
ブロックに制限し、そのプロパティを配置しましたクラスにはこれらのプロパティがあります。しかし、クエリを実行しようとすると、変数?node2Label
がアンバインドされているというエラーが表示されます。変数がオプションのブロック内にあってもこのエラーがスローされるのはなぜですか?このクエリはどのように解決できますか?アドバイスをいただければ幸いです。誰かがクエリを実行しようとする場合に備えて、私はオントロジを添付しました。
このリンクからオントロジーをダウンロードできます。それはあなたがLIMIT
文の前? node2Label
を書くように私は、あなたのクエリに問題が?
とnode2Label
の間に空白かもしれないと思う店/解剖学/ human.owl
https://github.com/AgreementMakerLight/AML-Jar
オントロジ全体が表示されないため、テストすることは不可能です。しかし、一般的に、クエリは有効なSPARQLであり、VirtuosoとApache Jenaで動作します。 – AKSW
申し訳ありませんが、ここにはontologyへのリンクがあります:https://github.com/AgreementMakerLight/AML-Jar –