[ 
https://issues.apache.org/jira/browse/MARMOTTA-393?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alan updated MARMOTTA-393:
--------------------------

    Description: 
When loading a literal value that already exists as a URI the 
KiWiConnection.loadLiteral throws an ClassCastException as the returned node is 
a URI. 

{noformat}
Caused by: java.lang.ClassCastException: 
org.apache.marmotta.kiwi.model.rdf.KiWiUriResource cannot be cast to 
org.apache.marmotta.kiwi.model.rdf.KiWiLiteral
        at 
org.apache.marmotta.kiwi.persistence.KiWiConnection.loadLiteral(KiWiConnection.java:627)
        at 
org.apache.marmotta.kiwi.sail.KiWiValueFactory.createLiteral(KiWiValueFactory.java:435)
        at 
org.apache.marmotta.kiwi.sail.KiWiValueFactory.createLiteral(KiWiValueFactory.java:350)
        at 
org.openrdf.rio.helpers.RDFParserHelper.createLiteral(RDFParserHelper.java:250)
{noformat}

Perhaps KiWiConnection.loadLiteral(String value, String lang, KiWiUriResource 
ltype) could validate the type and return null e.g.

>From this:
{noformat}
return (KiWiLiteral)constructNodeFromDatabase(result);
{noformat}
To this:
{noformat}
KiWiNode node = constructNodeFromDatabase(result);
KiWiNode kiWiNode = constructNodeFromDatabase(result);
if(kiWiNode.isLiteral()) {
    return (KiWiLiteral)kiWiNode;
} else {
    return null;
}
{noformat}




  was:
When loading a literal value that already exists as a URI the 
KiWiConnection.loadLiteral throws an ClassCastException as the return ed node 
is a URI. 

{noformat}
Caused by: java.lang.ClassCastException: 
org.apache.marmotta.kiwi.model.rdf.KiWiUriResource cannot be cast to 
org.apache.marmotta.kiwi.model.rdf.KiWiLiteral
        at 
org.apache.marmotta.kiwi.persistence.KiWiConnection.loadLiteral(KiWiConnection.java:627)
        at 
org.apache.marmotta.kiwi.sail.KiWiValueFactory.createLiteral(KiWiValueFactory.java:435)
        at 
org.apache.marmotta.kiwi.sail.KiWiValueFactory.createLiteral(KiWiValueFactory.java:350)
        at 
org.openrdf.rio.helpers.RDFParserHelper.createLiteral(RDFParserHelper.java:250)
{noformat}

Perhaps loadLiteral could validate the type and return null e.g.

>From this:
{noformat}
return (KiWiLiteral)constructNodeFromDatabase(result);
{noformat}
To this:
{noformat}
KiWiNode node = constructNodeFromDatabase(result);
KiWiNode kiWiNode = constructNodeFromDatabase(result);
if(kiWiNode.isLiteral()) {
    return (KiWiLiteral)kiWiNode;
} else {
    return null;
}
{noformat}





> ClassCastException when loading Literal thats stored as a URI
> -------------------------------------------------------------
>
>                 Key: MARMOTTA-393
>                 URL: https://issues.apache.org/jira/browse/MARMOTTA-393
>             Project: Marmotta
>          Issue Type: Bug
>          Components: KiWi Triple Store
>    Affects Versions: 3.1-incubating
>            Reporter: Alan
>            Assignee: Sebastian Schaffert
>
> When loading a literal value that already exists as a URI the 
> KiWiConnection.loadLiteral throws an ClassCastException as the returned node 
> is a URI. 
> {noformat}
> Caused by: java.lang.ClassCastException: 
> org.apache.marmotta.kiwi.model.rdf.KiWiUriResource cannot be cast to 
> org.apache.marmotta.kiwi.model.rdf.KiWiLiteral
>       at 
> org.apache.marmotta.kiwi.persistence.KiWiConnection.loadLiteral(KiWiConnection.java:627)
>       at 
> org.apache.marmotta.kiwi.sail.KiWiValueFactory.createLiteral(KiWiValueFactory.java:435)
>       at 
> org.apache.marmotta.kiwi.sail.KiWiValueFactory.createLiteral(KiWiValueFactory.java:350)
>       at 
> org.openrdf.rio.helpers.RDFParserHelper.createLiteral(RDFParserHelper.java:250)
> {noformat}
> Perhaps KiWiConnection.loadLiteral(String value, String lang, KiWiUriResource 
> ltype) could validate the type and return null e.g.
> From this:
> {noformat}
> return (KiWiLiteral)constructNodeFromDatabase(result);
> {noformat}
> To this:
> {noformat}
> KiWiNode node = constructNodeFromDatabase(result);
> KiWiNode kiWiNode = constructNodeFromDatabase(result);
> if(kiWiNode.isLiteral()) {
>     return (KiWiLiteral)kiWiNode;
> } else {
>     return null;
> }
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to