2013-05-03 7 views
0

은 다음과 같이 세 배로 :은 RDF와

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE rdf:RDF [<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'> 
<!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'> 
<!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>]> 
<rdf:RDF xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:dnr="http://www.dotnetrdf.org/configuration#" 
     xml:base="http://www.example.org/" 
     xmlns:nss="http://www.example.org/startTime" 
    xmlns:nse="http://www.example.org/endTime"> 

    <rdf:Description rdf:about="Fadi"> 
    <ns0:eat xmlns:ns0="http://example.org/">Apple</ns0:eat> 
    <nss:startTime>00:01:38</nss:startTime> 
    <nse:endTime>00:01:39</nse:endTime> 
    </rdf:Description> 

    <rdf:Description rdf:about="I"> 
    <ns1:love xmlns:ns1="http://example.org/">You</ns1:love> 
    <nss:startTime>00:05:35</nss:startTime> 
    <nse:endTime>00:06:39</nse:endTime> 
    </rdf:Description> 
</rdf:RDF> 

어떻게 주제 또는 객체에 대해 조회 할 수 있습니다?

내 코드 : 내가 쿼리의 모든 답변을 아래에 내 코드와

Graph myGraph = new Graph(); 
FileLoader.Load(myGraph, "C:\\Users\\hasoOn\\Desktop\\tt.rdf");     

TripleStore store = new TripleStore(); 
store.Add(myGraph); 

SparqlParameterizedString queryString = new SparqlParameterizedString(); 
queryString.CommandText = "PREFIX ex: <http://example.org/> SELECT * WHERE { { ex:fadi ?p ?o } UNION { GRAPH ?g { ?s ?p ?o } } } "; 
SparqlQueryParser parser = new SparqlQueryParser(); 
SparqlQuery query = parser.ParseFromString(queryString.CommandText); 
SparqlResultSet results = (SparqlResultSet)store.ExecuteQuery(query); 

if (results is SparqlResultSet) 
{ 
    SparqlResultSet rset = (SparqlResultSet)results; 
    foreach (SparqlResult result in rset) 
    { 
     Console.WriteLine(result); 
    } 
} 

. 누구나 내가 주제 = 파디 만 얻을 수 있도록 도와 줄 수 있습니까?

답변

3

노조의 두 번째 부분이 결과에 대한 책임이 있습니다. 변수가 바인드되지 않았으므로 저장소의 모든 그래프에서 모든 트리플을 쿼리합니다. 첫 번째 부분은 실제로 아무것도 반환하지 않습니다.

현재 두 가지 해결책이 있습니다

1) 당신과 함께 기본 데이터 세트에서 그래프를 추가 : 다음 쿼리 * {SELECT store.add (은 MyGraph) 문 를 추가하기 전에

myGraph.baseUri = null 

예 :?

Select * from _yourGraphUriHere { ex:Fadi ?p ?o} 
: 파디 P o를}

2) 당신이 쿼리를 변경 충분해야한다

그러면 원하는 것을 얻을 수 있습니다. 그런데

, URI를 케이스 것을 기억 민감한 그래서 예 : 파디는 당신이 조회 할하지만 아니다 예 : 파디

+0

myGraph.BaseUri = NULL; 전에 store.add (myGraph)가 작동 중입니다 .. 감사합니다. –