我有RDF图,其中许多都具有类模式的属性:SoftwareSourceCode我想找到类型schema的所有类:属于该属性的Person。
yaml中转换为RDF的源代码示例。
class: schema:SoftwareSourceCode
schema:publication:
- class: schema:ScholarlyArticle
id: urn:pmid:24371156
schema:name: "ALEA: a toolbox for allele-specific epigenomics analysis Bioinformatics (2014) 30 (8): 1172-1174."
schema:author:
- class: schema:Person
schema:name: "Hamid Younesy"
- class: schema:Person
schema:name: "Torsten Moller"
- class: schema:Person
schema:name: "Alireza Heravi-Moussavi"
- class: schema:Person
schema:name: "Jeffrey B. Cheng"
- class: schema:Person
schema:name: "Joseph F. Costello"
- class: schema:Person
schema:name: "Matthew C. Lorincz"
- class: schema:Person
id: mailto:mkarimi@bcgsc.ca
- class: schema:Person
schema:name: "Steven J. M. Jones"
schema:sameAs:
- http://dx.doi.org/10.1093/bioinformatics/btt744
- http://bioinformatics.oxfordjournals.org/content/30/8/1172.long
schema:author:
- class: schema:Person
id: mailto:mkarimi@bcgsc.ca
schema:name: "Mohammad Karimi"
schema:email: mailto:mkarimi@bcgsc.ca
schema:url: http://www.bcgsc.ca/author/mkarimi
schema:worksFor:
- class: schema:Organization
schema:name: "Canada's Michael Smith Genome Sciences Centre, BC Cancer Agency, Vancouver, British Columbia, V5Z 4S6, Canada"
- class: schema:Organization
schema:name: "Department of Medical Genetics, Life Sciences Institute, The University of British Columbia, Vancouver, British Columbia, V6T 1Z3, Canada"
我坚持下一个查询。它可以找到类模式:直接属性模式中的人:作者但不在模式中:发布
PREFIX schema: <http://schema.org/>
SELECT ?file ?SC ?name
WHERE {
graph ?file {
?SC a schema:SoftwareSourceCode .
?Person a schema:Person;
schema:name ?name .
?SC ?p ?Person .
}
}
#LIMIT 25
答案 0 :(得分:1)
我认为在你可以预测地进行查询之前,你需要更多地理解YAML的翻译。使用一些探索性查询,我猜测软件可能与使用schema:author属性的东西相关。这让我想到了这个问题:
prefix schema: <http://schema.org/>
select * where {
graph ?file {
?s a schema:SoftwareSourceCode ;
schema:author ?a .
?a ?p ?o
}
}
?a的值是&#34; mailto:&#34; IRI,您可以在查询结果中看到一些与它一起使用的谓词和值。现在,如果你想要除了作者以外的其他东西,你仍然可以这样做:
prefix schema: <http://schema.org/>
select * where {
graph ?file {
?s a schema:SoftwareSourceCode ;
?p ?a .
?a ?q ?o ;
a schema:Person .
}
}
这会产生很多结果,其中?p是schema:author,还有一些是schema:creator。
答案 1 :(得分:0)
这就是我想出的。我对这个解决方案不满意。然而它做的事情。因此,它选择我拥有的所有图形,然后找到具有类模式的所有对象:Person和具有类模式的所有项目:SoftwareSourceCode。然后我将图形与模式连接起来:SoftwareSourceCode ?file ?x ?SSC
现在是?SSC !schema:Thing+ ?P .
工作的小技巧,这意味着存在从?SSC到?P的路径。
prefix schema: <http://schema.org/>
SELECT ?file ?SSC ?name
where {
GRAPH ?file {
?P a schema:Person;
schema:name ?name .
?SSC a schema:SoftwareSourceCode .
?file ?x ?SSC .
?SSC !schema:Thing+ ?P .
}
}