아래 코드는 큰 프로젝트의 일부입니다. hasName, hasAge, hasPlace와 같은 레코드가 거의 없으며 Java에서 sparql 쿼리를 작성하여 레코드를 가져 오려고합니다. 쿼리는 이름 사이에 공백이없는 이름에 대해 작동합니다. 예 : 앨리스, 밥. 하지만 조이 믹 (Joy Mik), 어빈 폴 (Ervin pol)Sparql 쿼리를 작성하여 공간이있는 문자열을 얻는 방법
SELECT ?statement ?name ?age ?place
WHERE
{ ?statement recordNS:hasName <http://example/base/name>
?statement recordNS:hasAge ?age
?statement recordNS:hasPlace ?place
}
이실제 쿼리 : 내가 수행 한 경우
public static getAllStatementsForPerson(String PersonName) {
String queryString =
"PREFIX defaultNS: <" + defaultNS + "> " +
"SELECT ?statement ?age ?place "
+ "WHERE "
+ "{ ?statement defaultNS:hasname <" + defaultNS + PersonName + "> . "
+ "?statement defaultNS:hasAge ?age "
+ "?statement defaultNS:hasPlace ?place }";
System.out.println("queryString is: " + queryString);
Query query = QueryFactory.create(queryString);
QueryExecution qexec = QueryExecutionFactory.create(query, som); // "som" is an ontology model
try {
ResultSet results = qexec.execSelect();
while (results.hasNext()) {
ResultSetFormatter.out(System.out, results, query);
}
}
catch(Exception e){ e.printStackTrace();}
finally {qexec.close();}
return statements;
}
누구든지 저를 도와주세요, 이것은이 웹 사이트에서 솔루션에 대한 요구는 처음입니다 ... 어떤 실수가 수정하시기 바랍니다 나를.
들으은 ....
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:defaultNS="http://Example/Base/Record_#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<owl:Class rdf:about="http://Example/Base/Record_#Name"/>
<owl:Class rdf:about="http://Example/Base/Record_#Age"/>
<owl:Class rdf:about="http://Example/Base/Record_#Place"/>
<rdf:Property rdf:about="http://Example/Base/Record_#hasName"/>
<rdf:Property rdf:about="http://Example/Base/Record_#hasAge"/>
<rdf:Property rdf:about="http://Example/Base/Record_#hasPlace"/>
<defaultNS:RecordStatement rdf:about="http://Example/Base/Record_#statement001">
<defaultNS:hasName>
<defaultNS:Name rdf:about="http://Example/Base/Record_#Alice"/>
</defaultNS:hasName>
<defaultNS:hasAge>
<defaultNS:Age rdf:about="http://Example/Base/Record_#26"/>
</defaultNS:hasAge>
<defaultNS:hasPlace>
<defaultNS:Place rdf:about="http://Example/Base/Record_#Europe"/>
</defaultNS:hasPlace>
</defaultNS:RecordStatement>
<defaultNS:RecordStatement rdf:about="http://Example/Base/Record_#statement002">
<defaultNS:hasName>
<defaultNS:Name rdf:about="http://Example/Base/Record_#Bob"/>
</defaultNS:hasName>
<defaultNS:hasAge>
<defaultNS:Age rdf:about="http://Example/Base/Record_#30"/>
</defaultNS:hasAge>
<defaultNS:hasPlace>
<defaultNS:Place rdf:about="http://Example/Base/Record_#Rome"/>
</defaultNS:hasPlace>
</defaultNS:RecordStatement>
<defaultNS:RecordStatement rdf:about="http://Example/Base/Record_#statement003">
<defaultNS:hasName>
<defaultNS:Name rdf:about="http://Example/Base/Record_#JoyMik"/>
</defaultNS:hasName>
<defaultNS:hasAge>
<defaultNS:Age rdf:about="http://Example/Base/Record_#24"/>
</defaultNS:hasAge>
<defaultNS:hasPlace>
<defaultNS:Place rdf:about="http://Example/Base/Record_#Paris"/>
</defaultNS:hasPlace>
</defaultNS:RecordStatement>
<defaultNS:RecordStatement rdf:about="http://Example/Base/Record_#statement002">
<defaultNS:hasName>
<defaultNS:Name rdf:about="http://Example/Base/Record_#ErvinPol"/>
</defaultNS:hasName>
<defaultNS:hasAge>
<defaultNS:Age rdf:about="http://Example/Base/Record_#36"/>
</defaultNS:hasAge>
<defaultNS:hasPlace>
<defaultNS:Place rdf:about="http://Example/Base/Record_#StPetersburg"/>
</defaultNS:hasPlace>
</defaultNS:RecordStatement>
</rdf:RDF>
몇 가지 기록과 샘플 RDF 파일입니다하지만 내 작업이 그 이름을 변경하는 것입니다 : "JoyMik를", "ErvinPol"을 "기쁨 미케", "어빈 폴" ... 그래서 나는
---------------------------------------
| Statement | name | age | place |
=======================================
| statement003 | JoyMik | 24 | Rome |
---------------------------------------
PREFIX defaultNS: <http://Example/Base/Record_#>
SELECT ?statement ?name ?age ?place
WHERE {
?statement defaultNS:hasName <http://Example/Base/Record_#JoyMik> .
?statement defaultNS:hasAge ?age .
?statement defaultNS:hasPlace ?place
}
... RDF 파일에서 레코드를 얻을 수 SPARQL에 쿼리를 작성하지만 이름이 "JoyMik" "기쁨 미케는"그 오류의를 제공하기를 변경하려면 위의 "queryString"... 나는 그것이 공백을 받아들이는 곳을 추가 할 필요가 있다고 생각했다. s .....
당신이 질의하는 데이터의 일부를 보여주십시오. Andy가 언급했듯이, URI에는 공백이 허용되지 않으므로,과 같은 것이 있어서는 안됩니다. 쿼리하는 데이터를 표시하는 경우 (그리고 합법적 인 경우) 쿼리를 조정하는 방법을 보여줄 수 있습니다. –
[Alice 26 Europe] [Bob 30 Rome] [ "Joy Mik"29 Paris] [ "Ervin pol"36 "St. Petersburg"] 이런 식으로 기록이 어떻게 나타나는지. – raj2103