2016-12-27 23 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,沒有結果。 –

相關問題