2011-10-07 3 views
3

이것은 초보자가 아닌 RDF 그래프와 sparql 쿼리로 혼동을 일으킬 수 있습니다.SPARQL 쿼리 : EARL 문서에서 줄 번호와 char 번호를 얻는 방법?

<earl:Assertion> 
<earl:subject rdf:nodeID="A1"/> 
<earl:assertedBy rdf:nodeID="A2"/> 
<earl:test rdf:resource="http://www.w3.org/TR/xhtml1/#C_2"/> 
<earl:mode rdf:resource="http://www.w3.org/ns/earl#automatic"/> 
<earl:result> 
    <earl:TestResult> 
    <earl:pointer> 
     <pnt:EquivalentPointers> 
     <pnt:groupPointer> 
      <pnt:LineCharPointer> 
      <pnt:charNumber rdf:datatype="http://www.w3.org/2001/XMLSchema#positiveInteger" 
      >108</pnt:charNumber> 
      <pnt:lineNumber rdf:datatype="http://www.w3.org/2001/XMLSchema#positiveInteger" 
      >9</pnt:lineNumber> 
      </pnt:LineCharPointer> 
     </pnt:groupPointer> 
     <pnt:groupPointer> 
      <pnt:CharOffsetPointer> 
      <pnt:offset rdf:datatype="http://www.w3.org/2001/XMLSchema#positiveInteger" 
      >935</pnt:offset> 
      </pnt:CharOffsetPointer> 
     </pnt:groupPointer> 
     </pnt:EquivalentPointers> 
    </earl:pointer> 
    <earl:outcome rdf:resource="http://www.w3.org/ns/earl#failed"/> 
    <dct:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string" 
    >A space character is missing before '/&gt;'.</dct:description> 
    </earl:TestResult> 
</earl:result> 
</earl:Assertion> 

을 나는이 발췌에서 얻을 싶은 : 이 내가 검색해야 (EARL, 평가 및 보고서 언어) RDF 파일의 관련 부분은 LINENUMBER (및 charNumber), 사실 그 백작 : 결과가 실패하고 설명이 실패했습니다. 지금까지 내가 구할 수 있었던 것은 줄 번호였습니다. 그러나 결과는 줄 번호 + "^^ http://www.w3.org/2001/XMLSchema#positiveInteger"입니다. 왜 이런 일이 일어 났는지 나는 모른다.

도움 주셔서 감사합니다.

+0

당신이에 시도 했 : http://answers.semanticweb.com/ – YMomb

+0

당신은 당신이 지금까지 시도 쿼리 무엇을 보여 주시겠습니까 우리가 대신 JSON 출력을 선택하면 당신은 명확하게 볼 수 있습니까? – RobV

+0

@YMomb : Jena 및 시맨틱 웹 질문은 환영합니다. 답변도 StackOverflow뿐 아니라 answers.semanticweb –

답변

5

는 다음 쿼리는 모두 (나는 당신이 무슨 말을하지 않았기 때문에, pnt:에 대한 URI를 구성했고이 prefix.cc에 목록에없는주의) 샘플에서 결과를 실패 꺼내서 :

prefix pnt: <http://example.org/pnt#> 
prefix earl: <http://www.w3.org/ns/earl#> 
prefix dct: <http://purl.org/dc/terms/> 

select ?result ?desc ?charNo ?lineNo { 
    ?assert a earl:Assertion; 
      earl:result ?result. 

    ?result earl:outcome earl:failed; 
      earl:pointer/pnt:groupPointer ?gpt; 
      dct:description ?desc. 

    ?gpt pnt:charNumber ?charNo; 
     pnt:lineNumber ?lineNo. 
} 

이 쿼리는 일반 텍스트로 다음과 같은 결과를 제공합니다 : 당신이 제공하는 RDF의 샘플에 따라

$ arq --graph=./src/main/resources/earl.rdf --file=./src/main/resources/earl.sparql 
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 
| result | desc                        | charNo             | lineNo             | 
==================================================================================================================================================================================================================================== 
| _:b0 | "A space character is\n   missing before '/>'."^^<http://www.w3.org/2001/XMLSchema#string> | "108"^^<http://www.w3.org/2001/XMLSchema#positiveInteger> | "9"^^<http://www.w3.org/2001/XMLSchema#positiveInteger> | 
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 

당신이 XSD 유형과 datatyped되어 원하는 두 개의 번호. ^^ 장식은 Turtle 구문을 사용하여 데이터 유형을 간단하게 표현합니다.

$ arq --graph=./src/main/resources/earl.rdf --file=./src/main/resources/earl.sparql --results=json 
{ 
    "head": { 
    "vars": [ "result" , "desc" , "charNo" , "lineNo" ] 
    } , 
    "results": { 
    "bindings": [ 
     { 
     "result": { "type": "bnode" , "value": "b0" } , 
     "desc": { "datatype": "http://www.w3.org/2001/XMLSchema#string" , "type": "typed-literal" , "value": "A space character is\n   missing before '/>'." } , 
     "charNo": { "datatype": "http://www.w3.org/2001/XMLSchema#positiveInteger" , "type": "typed-literal" , "value": "108" } , 
     "lineNo": { "datatype": "http://www.w3.org/2001/XMLSchema#positiveInteger" , "type": "typed-literal" , "value": "9" } 
     } 
    ] 
    } 
} 
+0

이안 감사합니다. 매력처럼 작동합니다. 그런데 pnt URI는 다음과 같습니다.'http : // www.w3.org/2009/pointers #' 그래도 여전히 성가신 뭔가가 있습니다. 파일을 쿼리하기 위해 Jena 프레임 워크를 사용하고 올바른 결과를 얻는 동안 많은 오류와 경고를받습니다> 기본 URI는 null이지만 해결할 상대 URI가 있습니다. RDF에서 상대 URI는 허용되지 않습니다. 기준이 문서에 정의되어 있지 않습니다. 어디에서 정의할까요? 어떻게 생겼습니까? 다시 한번 감사드립니다! – Alternativc

+1

안녕하세요, 상대 URI는 실제로 RDF에서 허용되지 않습니다. 두 가지 방법으로이를 해결할 수 있습니다 : 입력 XML 문서에'xml : base'가 있는지 확인하거나'Model.read (String url, String base, String lang)'의 두 번째 매개 변수로 기본 URI를 전달하십시오. 요구. –

+0

감사! 두 번째 옵션으로 갔는데 오류가 사라졌습니다. – Alternativc

관련 문제