簡體   English   中英

從Jena ResultSet獲取RDFNode

[英]Get RDFNode from Jena ResultSet

如何從QueryExecution產生的ResultSet中檢索Jena RDFNode? 運行查詢后,我能夠看到正確的ResultSet,但結果僅提供節點的URI,任何人都可以告訴我需要執行哪些操作才能獲取RDF節點詳細信息。 這將使我提取每個屬性,以便以后使用。 我看到的解決方法是使用查詢來顯示實例的屬性,而不是實例本身。

當前結果:

http://assignment3.stdi.msmsuhail.ead/bpl.owl#Arsenal

預期結果:

<rdf:Description rdf:about="http://assignment3.stdi.msmsuhail.ead/bpl.owl#Arsenal">
    <bpl:hasStadiumLocation rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Holloway</bpl:hasStadiumLocation>
    <rdf:type rdf:resource="http://assignment3.stdi.msmsuhail.ead/bpl.owl#Clubs"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#NamedIndividual"/>
    <bpl:hasStadiumName rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Emirates Stadium</bpl:hasStadiumName>
    <bpl:hasPlayer rdf:resource="http://assignment3.stdi.msmsuhail.ead/bpl.owl#TheoWalcott"/>
    <bpl:hasPlayer rdf:resource="http://assignment3.stdi.msmsuhail.ead/bpl.owl#MikelArteta"/>
    <bpl:hasName rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Arsenal</bpl:hasName>
    <bpl:hasNumberSeats rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">60355</bpl:hasNumberSeats>
    <bpl:hasManager rdf:resource="http://assignment3.stdi.msmsuhail.ead/bpl.owl#ArseneWenger"/>
    <bpl:hasPlayer rdf:resource="http://assignment3.stdi.msmsuhail.ead/bpl.owl#AaronRamsey"/>
</rdf:Description>

SPARQL查詢:

SELECT DISTINCT  ?clubs ?clubName 
WHERE {
    ?Club bpl:hasPlayer ?players.
    ?Club bpl:hasManager  ?managers.
    ?players bpl:hasClub ?clubs .
    ?players bpl:hasAge ?playerAge.
    ?players bpl:hasName ?playerName.
    ?players bpl:hasNationality ?playerNationality.
    ?players bpl:hasPlayingPosition ?playerPosition.
    ?players bpl:isRetired ?playerIsRetired.
    ?clubs bpl:hasName ?clubName.
    ?clubs bpl:hasNumberSeats ?clubSeats.
    ?clubs bpl:hasStadiumName ?clubStadiumName .
    ?clubs bpl:hasStadiumLocation ?clubStadiumLocation.
    ?managers bpl:hasAge ?managerAge.
    ?managers bpl:hasName ?managerName.
    ?managers bpl:hasNationality ?managerNationality.
    ?managers bpl:isManager ?isManager.
} 
ORDER BY ASC (?clubName)

Java代碼:

    while(resultSet!=null && resultSet.hasNext()){
                   QuerySolution querySolution = resultSet.nextSolution();
                   System.out.println(querySolution.get("clubs").toString());                              
    } 

QuerySolution#get(String)的Javadoc說返回值 RDFNode,因此您已經獲取的值是RDFNode。 如果您正在運行本地查詢(即,如果您有運行查詢的模型),則可以使用它來獲取屬性值,例如,

RDFNode clubNode = querySolution.get( "club" );
Resource club = clubNode.asResource().inModel( model );
Statement stmt = club.getProperty( BPL.hasStadiumLocation );
System.out.println( stmt.getObject() ); // prints "Holloway"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM