2015-01-29 3 views
4

워크 플로우 요소에 대한 많은 정보를 검색하기 위해 SPARQL 쿼리를 만들었습니다. 쿼리는 데이터베이스와 대화하며 Python에서 호출됩니다. 쿼리의 형식은 다음과 같습니다.SPARQL 쿼리에서 변수를 미리 정의하는 방법

"""SELECT ?input ?value1 ?value2 ?value3 .... 
WHERE {?input rdf:type InputVar. 
?input property1 ?value1. 
?input property2 ?value2. 
?input property3 ?value3. 
.... etc.... 
}""" 

이 쿼리는 알고 싶은 속성에 해당하는 값을 모두 반환합니다.

이제 쿼리에서 모든 입력 변수를 찾을 수 있기를 원합니다. (예 : 지금처럼) 원하는대로 입력 정보를 수집 할 수 있기를 바랍니다. 입력. 이 같은이 가능하고 뭔가 될 것이다 : 나는 지정한 이름이있는 경우에 따라, % s을 (를) 할 것

%s property1 ?value1 
%s property2 ?value2 

, 수 입력 또는은 inputName (지정된 이름)?.

그러나 나는 이것을 아주 좋아한다면 꽤 많은 속성을 추출 할 때 % s을 많이 필요로 할 것입니다.

SPARQL에서 찾고자하는 변수의 이름을 정의 할 수 있습니까? 이런 식으로 할 수 있을까요?

"""SELECT ?input ?value1 ?value2 ?value3 .... 
    WHERE {(?input=inputname) 
    ?input rdf:type InputVar. 
    ?input property1 ?value1. 
    ?input property2 ?value2. 
    ?input property3 ?value3. 
    .... etc.... 
    }""" 

처음에 (? input = inputname)을 추가하여이 값만 찾습니다.

+1

에서 prepared queries의 예를 기반으로 특히 관심이 될 수 있습니다. jquery 또는 python을 사용하고 있습니까? –

+0

무슨 태그가 무슨 뜻이야, 미안? 저는 jquery를 사용하지 않고 AllegroGraph의 Python API 인 – RobinAugy

+1

을 사용하고 있습니다.이 질문 아래에서 [tag : jquery], [tag : python] 및 [tag : sparql]을 사용하여 질문에 태그를 추가했습니다. 질문 아래의 [편집] (http://stackoverflow.com/posts/28217801/edit) 링크를 사용하여 태그를 변경할 수 있습니다. –

답변

3

일반적으로 VALUES 절을 사용해 볼 수 있습니다. 예 :

SELECT * 
WHERE 
{ 
    VALUES ?input { <http://myConstant> } 
    ?input rdf:type InputVar. 
    ?input property1 ?value1. 
    ?input property2 ?value2. 
    ?input property3 ?value3. 
    # etc. 
} 

그러나 이것은 실제로 사용자가 직접 원하는 것을 수행하지 않는다는 것을 이해하는 것이 중요합니다. 의미 적으로 그래프 패턴의 일치 항목에 상수를 결합하면 ?input이 상수와 일치하지 않는 일치 항목을 제거합니다. 일부 쿼리 엔진은이를 대체하기 위해 간단하게 처리 할 수있을만큼 똑똑 할 수 있지만 모든 쿼리 엔진이 필요하지는 않으며 비교적 단순한 쿼리에만 적용될 수 있습니다.

대부분의 SQL API에서 볼 수 있듯이 준비/매개 변수화 된 쿼리 지원을 실제로 수행 한 것 같습니다.

다양한 API에서이를 수행하는 방법을 설명하는 What's the best way to parameterise SPARQL queries을 살펴보십시오.

파이썬을 언급 때문에 answer using Python 내가 태그에 의해 혼란 해요 RDFLib 워드 프로세서

+0

예! 일이야! 당신은 내 영웅입니다. :) 필자는 AllegroGraph를 Python API를 통해 사용하고 있다고 언급 했었지만 이것은 AG에서 완전히 작동합니다! – RobinAugy

관련 문제