RDAR에서 온톨로지의 특정 속성과 레이블을 추출하는 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
를 사용하려고했습니다 단일 속성에 대한 여러 값에 제한을가 하나의 행에 클래스에 대한 모든 관련 정보를 갖도록 이러한 모든 값을 단일 행에 가져옵니다.
이
내가 실행하는 데 노력하고있어 쿼리입니다 다음 rdf4j 포럼에서 여러 기여자에 의해 제안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""")
, 나는 때문에 모든의, 제한 및 OPTIONAL
블록의 속성을 배치 한 클래스에는 이러한 속성이 있습니다. 그러나 쿼리를 실행하려고하면 변수 ?node2Label
이 언 바운드됨을 알리는 오류가 발생합니다. 변수가 선택적 블록 안에 있더라도이 오류가 발생하는 이유는 무엇입니까?이 쿼리를 어떻게 해결할 수 있습니까? 모든 조언을 많이 주시면 감사하겠습니다. 누군가가 직접 쿼리를 실행하려고 할 경우에 대비해 온톨로지를 첨부했습니다.
온톨로지는이 링크에서 다운로드 할 수 있습니다. 그것은 당신이 LIMIT
문 앞에 ? node2Label
쓰기 나는, 당신의 쿼리에 문제가 ?
와 node2Label
사이의 빈 공간이있을 것 같아요 저장/해부학/human.owl
https://github.com/AgreementMakerLight/AML-Jar
전체 온톨로지가 표시되지 않으므로 테스트 할 수 없습니다. 그러나 일반적으로 쿼리는 유효한 SPARQL이며 Virtuoso 및 Apache Jena에서 작동합니다. – AKSW
죄송합니다. 여기 온톨로지에 대한 링크가 있습니다 : https://github.com/AgreementMakerLight/AML-Jar –