2016-12-27 70 views
-1

我有两种不同的本体论:一种用于电影流派,另一种用于电影认证。我想在SPARQL中编写一个查询,查询可以找到具有认证x(比如说PG-13)和类别y(比如action)的电影。这两个本体都不同,我在Apache Jena中上传它们。如何在两个不同的本体上进行查询?

这是我的本体论:

PREFIX o2: <http://www.semanticweb.org/administrator/ontologies/2016/11/genre_ontology#> 
PREFIX o1: <http://www.semanticweb.org/administrator/ontologies/2016/11/certification_ontology#> 

我想找到有体裁和认证电影。我的查询是

SELECT ?x ?z 
WHERE { 
    ?x o1:hasCertificationOf ?y. 
    ?z o2:hasGenre ?a. 

    FILTER regex(str(?y),"R_") FILTER regex (str(?a),"Adventure") 
} 

这里RRestricted认证

查询结果包含电影xz,但我只想在xz普通的电影?

+0

你试过了什么?你想如何加入电影?根据他们(完全相同)的标题,基于一个共同的ID?添加更多细节! – vefthym

+0

如果你将两个本体加载到同一个Jena模型中,我没有看到任何问题。只需编写SPARQL查询,耶拿不关心三元组的起源。 – AKSW

+0

这些是我的本体论PREFIX o2:http://www.semanticweb.org/administrator/ontologies/2016/11/genre_ontology#PREFIX o1:http://www.semanticweb.org/administrator/ontologies/2016/11/certification_ontology #,我想找到具有流派和认证的电影。我的查询是SELECT?x?z WHERE {?x o1:hasCertificationOf?y。 ?z o2:hasGenre?a。 FILTER正则表达式(str(?y),“R_”)FILTER正则表达式(str(?a),“Adventure”)}这里R是Restricted certification查询结果包含x和z中的电影,但我只想要普通电影x和z? –

回答

1

你应该总是试着提供一个最小的例子和你的问题。

你可能想看看Multiple triple patterns

?s cert:level cert:PG13 . 
?s genres:genre genres:Action . 

正如你看到的,我们使用两个命名空间(2个本体)。您可以参考他们这样的(你的SPARQL查询前):

PREFIX cert: <http://example.com/cert/1.0/> 
PREFIX genres: <http://example.com/genres/1.0/> 

最终的查询可能是这样的:

PREFIX cert: <http://example.com/cert/1.0/> 
PREFIX genres: <http://example.com/genres/1.0/> 

SELECT ?s ?p ?o 
WHERE { 
    ?s ?p ?o . 
    ?s cert:level cert:PG13 . 
    ?s genres:genre genres:Action . 
} 

NB:为了在单个查询申请多图模式,您必须在这些模式中使用相同的变量(最后2个图形中的?s)。

我没有从属于作者,但我认为你可能会受益于服用https://www.futurelearn.com/courses/linked-data

+0

这些是我的本体论PREFIX o2:http://www.semanticweb.org/administrator/ontologies/2016/11/genre_ontology#PREFIX o1:http://www.semanticweb.org/administrator/ontologies/2016/11/certification_ontology #,我想找到具有流派和认证的电影。我的查询是SELECT?x?z WHERE {?x o1:hasCertificationOf?y。 ?z o2:hasGenre?a。 FILTER正则表达式(str(?y),“R_”)FILTER正则表达式(str(?a),“Adventure”)}这里R是Restricted certification查询结果包含x和z中的电影,但我只想要普通电影x和z? –

+0

不使用'x'和'z',只需在两种模式中使用'x'。更新了我的答案以突出显示。 – berezovskyi

+0

通过在两种模式中使用x,没有结果。 –

相关问题