2009-07-07 6 views
0

저는 쿼리 폼을 생성하고 사용자가 폼의 키워드를 입력하도록합니다. 그런 다음 쿼리 양식은 다음 페이지로 이동하여 쿼리 폼에서 만든 변수를 다음 페이지로 가져옵니다. 새 페이지의 발췌 코드는 다음과 같습니다.PHP를 사용하여 SPARQL 쿼리에 변수를 포함하는 방법

//received variable 
$abc1=$_POST['querykeyword']; 

$querystring = ' 
Prefix try <http://www.semanticweb.org/ontologies/2009/5/test.owl#> 
SELECT ?name ?age 
WHERE 
    {  ?url try:has-name ${"abc1"} ?name 
     ?url try:has-age ?age }'; 

그러나 출력을 제공하지 않았습니다. 아무도 도와 줄 수 있니?

+0

. 사용하는 RDF 스토리지 엔진 및/또는 SPARQL 쿼리 엔진을 (알고 있다면) 지정할 수도 있습니다. – tialaramex

답변

0

쿼리에 많은 구문 문제가있는 것으로 보입니다. try:has-name 속성에는 리터럴 도메인이있을 수 있습니다. 그래서 당신은 따옴표로 귀하의 리터럴을 넣어해야합니다. 또한 그래프 패턴과 다른 일부 단점 사이에 누락 된 .이 있습니다. 그 중 일부는 stackoverflow의 코드가 아닌 텍스트의 형식 지정과 관련됩니다 (질문의 형식을 다시 지정하여 해결됨). 그러나이 시도 :

$querystring = ' 
    PREFIX try: <http://www.semanticweb.org/ontologies/2009/5/test.owl#> 
    SELECT ?name ?age { 
    ?url try:has-name ?name . 
    ?url try:has-age ?age . 
    FILTER(?name = \"${"abc1"}\") 
    }'; 

PREFIX 문은 try 네임 스페이스 접두사를 선언합니다. 그런 다음 두 변수 nameage을 선택하는 SELECT 절이 있습니다. WHERE은 선택 사항입니다. 두 그래프 패턴은 두 패턴과 일치하는 트리플을 선택하고 FILTER은 일치 기준 인 name을 충족하는 트리플 만 보유합니다. @ tialaramex의 해결책은 당신이 이미 그 이름을 알고 있기 때문에 아마 또한 당신을 위해 일할 것입니다. 앞으로 좀 더 복잡한 필터링 작업을 사용하고자 할 때를 대비해 약간 다른 해결책으로 편집하고 있습니다.

+0

@Prefix는 거북이 기능입니다. 이것은 SPARQL입니다. @Prefix가 아닌 SPARQL의 PREFIX 일뿐입니다. – tialaramex

+0

@tialaramex : 다시 한번 감사드립니다. 결정된. 다음 번에 내 쿼리를 구문 분석합니다. – laalto

+0

브라우저에서 '일치하지 않음'으로 표시된 결과가 있지만이 방법을 시도했습니다. 하지만 HTML 테이블에서 이름과 나이를 알려줘야한다는 것을 알고 있습니다. –

1

질문과 laalto의 대답은 모두 SPARQL이 아니지만 laalto가 가까워지고 있습니다.

Ismet이? name 변수를 고정 값으로 대체하려고합니다. 그렇다면? name 변수는 SELECT와 쿼리 본문에서 제거되어야합니다. 그렇지 않으면 구문 분석해서는 안되며 원하는 결과를 확실하게 반환하지 않아야합니다. 사용 된 PHP도 T_VARIABLE에 대해 잘못된 이스케이프 처리를하고 있으며, PREFIX에는 SPARQL 구문 규칙에 필요한 콜론이 없습니다.

시도 :

$querystring = " 
    PREFIX try: <http://www.semanticweb.org/ontologies/2009/5/test.owl#> 
    SELECT ?age 
    WHERE { 
    ?url try:has-name \"${abc1}\" . 
    ?url try:has-age ?age 
    }"; 

이 적어도 당신의 변수를 포함하는 올바른 구문 SPARQL 쿼리를 방출한다.

+0

@tialaramex :주의 해 주셔서 감사합니다. 지금 내 대답을 수정했습니다. – laalto

+0

나는 그것을 시험해 보았다. 그러나 나는 아직도 나에게 결과를주지 않는다. –

+0

원하는 쿼리를 수동으로 실행하여 실제로 작동하는지 확인 했습니까? – tialaramex

0

이전 질문 : FWIW : Fresnel을 사용하는 것이 좋습니다. 초기에는 더 많은 작업이 있었지만 더 많은 유연성을 얻었으며 이미 몇 가지 문제점을 해결했습니다. Fresnel은 RDF를 표시하는 방법을 설명하는 RDF 프레젠테이션 어휘입니다. SPARQL CONSTRUCT 쿼리를 사용하여 데이터를 수집 한 다음 Fresnel 엔진에 전달하여 성능을 위해 캐시 계층을 사용하여 HTML을 생성 할 수 있습니다.

일부 프레 넬 엔진 구현, 당신은 PHP에서 작업하는 특히 이후 호루스 참조 :

  • 비유의 프레 넬 엔진; Java, Maven 저장소에서 사용 가능

  • Emmanuel 's IsaViz (부분적으로; FSL을 부분적으로 구현 함); Java는 SIMILE 엔진을 활용할 가능성이 높습니다.

  • Freie Universität Berlin Horus; (알 수없는) PHP

  • OlinCollege

    내가 더 도움이 당신이 우리에게 당신이 쿼리하는 RDF의 샘플을 제공해야합니다 답변 및 테스트에 사용하는 $ ABC1의 가치를 생각
+0

안녕하세요, 직유가 더 이상 살아 있지 않은 것 같습니다. 추천 할 수있는 다른 프레 넬 엔진을 알고 있습니까? –

관련 문제