2016-12-27 8 views
-1

두 개의 서로 다른 온톨로지가 있습니다 : 하나는 영화 장르 용이고 다른 하나는 영화 인증 용입니다. 나는 x (예 : PG-13)이고 장르는 y (예 : action) 인 영화를 찾을 수있는 SPARQL 쿼리를 작성하고 싶습니다. 두 온톨로지는 다르며 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#> 

:

이들은

내 온톨로지이다. 내 쿼리 여기 R

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

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

입니다 Restricted 인증

쿼리 결과가 xz에서 영화를 포함,하지만 난 단지 xz에서 일반적으로 영화를 원하는입니까?

+0

무엇을 시도 했습니까? 어떻게 영화에 참여하고 싶니? 공통 ID를 기반으로 한 (정확하게 동일한) 제목을 기반으로합니까? 자세한 내용을 추가하십시오! – vefthym

+0

같은 Jena 모델에 두 개의 온톨로지를로드하면 아무런 문제가 발생하지 않습니다. SPARQL 쿼리를 작성하면 Jena는 트리플의 출처를 신경 쓰지 않습니다. – 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 regex (str (? y), "R_") FILTER regex (str (? a), "Adventure")} 여기서 R은 제한된 인증입니다. 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을 : 단일 쿼리에서 여러 그래프 패턴을 적용하기 위해, 그 패턴에서 동일한 변수를 사용해야합니다 (마지막 두 그래프 패턴에서 ?s).

나는 저자와 아무런 관련이 없지만, https://www.futurelearn.com/courses/linked-data을 복용하면 도움이 될 것이라고 생각합니다.

+0

이들은 내 온톨로지입니다. 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")} 여기서 R은 제한된 인증입니다. x 및 z로 영화를 포함하는 쿼리 결과이지만, x와 z? –

+0

'x'와'z'를 사용하지 마십시오. 두 패턴 모두에서'x'를 사용하십시오. 내 대답을 업데이트하여이를 강조 표시했습니다. – berezovskyi

+0

두 패턴 모두에서 x를 사용하면 아무런 결과도 나오지 않습니다. –