You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Dmitri Pisarenko <dp...@altruix.co> on 2017/03/24 20:35:42 UTC

How to read a list?

Hello!

I have a Jena-based database with an individual batch in it. A batch is a structure, which has (among other things) a list companyIds (elements are strings). In this particular example the batch number 1 has a list with following company IDs:

136648473
136648520
136648577

My goal is to retrieve this list. For this, I execute the following code:

    open fun batchStatusLogic(ds: Dataset, batchId: Int): FailableOperationResult<Bp2BatchStatus> {
        val sparql = """SELECT ?x
                            WHERE { ?x <$Bp2BatchNumber> $batchId }"""
        val query = createQuery(sparql)
        val qexec = createQueryExecution(ds, query)
        val rs = qexec.execSelect()
        if (!rs.hasNext()) {
            return FailableOperationResult<Bp2BatchStatus>(
                    false,
                    "Batch not found.",
                    null
            )
        }
        val sol = rs.nextSolution()
        val rec = sol["x"]
        val prop = findStatement(Bp2BatchCompanyIds, rec as Resource)
        if (prop == null) {
            return FailableOperationResult<Bp2BatchStatus>(
                    false,
                    "Company list not found.",
                    null
            )
        }
        val obj = prop.`object`
        if (!(obj is RDFList)) {
            return FailableOperationResult<Bp2BatchStatus>(false, "Internal logic error.", null)
        }

obj is not RDFList, but ResourceImpl with obj.enhGraph being displayed as the XML given below.

How can I read all elements of the list (136648473, 136648520, 136648577) ?

If there is a problem with the way the list is stored, please also tell.

Thanks in advance

Dmitri Pisarenko

obj.enhGraph contents:

<ModelCom   {http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://www.w3.org/2001/vcard-rdf/3.0#EMAIL "d.a.pisarenko@bk.ru"; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://www.w3.org/2001/vcard-rdf/3.0#N -1bac0f47:15a5c92e655:-7fff; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://mycompany.com/data/person/firstContactDateTime "2017-02-20T17:30:15.515Z"^^http://www.w3.org/2001/XMLSchema#dateTime; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://mycompany.com/data/person/telegramUserId "338329909"^^http://www.w3.org/2001/XMLSchema#integer; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @/bp1add "true"^^http://www.w3.org/2001/XMLSchema#boolean; -1bac0f47:15a5c92e655:-7fff @http://www.w3.org/2001/vcard-rdf/3.0#NICKNAME "mw"; http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd @http://mycompany.com/data/bp-2/batch/batchNumber "1"^^http://www.w3.org/2001/XMLSchema#integer; http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd @http://mycompany.com/data/bp-2/batch/persona "FD"; http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd @http://mycompany.com/data/bp-2/batch/companyIds 1d387ae6:15b01db5f1f:-7fff; 1d387ae6:15b01db5f1f:-7fff @http://www.w3.org/1999/02/22-rdf-syntax-ns#first "136648473"^^http://www.w3.org/2001/XMLSchema#integer; 1d387ae6:15b01db5f1f:-7fff @http://www.w3.org/1999/02/22-rdf-syntax-ns#rest 1d387ae6:15b01db5f1f:-7ffe; 1d387ae6:15b01db5f1f:-7ffe @http://www.w3.org/1999/02/22-rdf-syntax-ns#first "136648520"^^http://www.w3.org/2001/XMLSchema#integer; 1d387ae6:15b01db5f1f:-7ffe @http://www.w3.org/1999/02/22-rdf-syntax-ns#rest 1d387ae6:15b01db5f1f:-7ffd; 1d387ae6:15b01db5f1f:-7ffd @http://www.w3.org/1999/02/22-rdf-syntax-ns#first "136648577"^^http://www.w3.org/2001/XMLSchema#integer; 1d387ae6:15b01db5f1f:-7ffd @http://www.w3.org/1999/02/22-rdf-syntax-ns#rest http://www.w3.org/1999/02/22-rdf-syntax-ns#nil} |  [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, http://www.w3.org/2001/vcard-rdf/3.0#EMAIL, "d.a.pisarenko@bk.ru"] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, http://www.w3.org/2001/vcard-rdf/3.0#N, -1bac0f47:15a5c92e655:-7fff] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, http://mycompany.com/data/person/firstContactDateTime, "2017-02-20T17:30:15.515Z"^^http://www.w3.org/2001/XMLSchema#dateTime] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, http://mycompany.com/data/person/telegramUserId, "338329909"^^http://www.w3.org/2001/XMLSchema#integer] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, /bp1add, "true"^^http://www.w3.org/2001/XMLSchema#boolean] [-1bac0f47:15a5c92e655:-7fff, http://www.w3.org/2001/vcard-rdf/3.0#NICKNAME, "mw"] [http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd, http://mycompany.com/data/bp-2/batch/batchNumber, "1"^^http://www.w3.org/2001/XMLSchema#integer] [http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd, http://mycompany.com/data/bp-2/batch/persona, "FD"] [http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd, http://mycompany.com/data/bp-2/batch/companyIds, 1d387ae6:15b01db5f1f:-7fff] [1d387ae6:15b01db5f1f:-7fff, http://www.w3.org/1999/02/22-rdf-syntax-ns#first, "136648473"^^http://www.w3.org/2001/XMLSchema#integer] [1d387ae6:15b01db5f1f:-7fff, http://www.w3.org/1999/02/22-rdf-syntax-ns#rest, 1d387ae6:15b01db5f1f:-7ffe] [1d387ae6:15b01db5f1f:-7ffe, http://www.w3.org/1999/02/22-rdf-syntax-ns#first, "136648520"^^http://www.w3.org/2001/XMLSchema#integer] [1d387ae6:15b01db5f1f:-7ffe, http://www.w3.org/1999/02/22-rdf-syntax-ns#rest, 1d387ae6:15b01db5f1f:-7ffd] [1d387ae6:15b01db5f1f:-7ffd, http://www.w3.org/1999/02/22-rdf-syntax-ns#first, "136648577"^^http://www.w3.org/2001/XMLSchema#integer] [1d387ae6:15b01db5f1f:-7ffd, http://www.w3.org/1999/02/22-rdf-syntax-ns#rest, http://www.w3.org/1999/02/22-rdf-syntax-ns#nil]>

Re: How to read a list?

Posted by "Lorenz B." <bu...@informatik.uni-leipzig.de>.
@Andy

As far as I understand the code, what you mentioned is just the first
step to get some subject resource. And the findStatement() method is
supposed to return the list, but it's not clear what he's doing in this
method:

val prop = findStatement(Bp2BatchCompanyIds, rec as Resource)

> Hi - could you print the data in a readable syntax such as Turtle? and
> a complete, self-contained example?
>
> The list occurs at:
>
> <http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd>
>         <http://mycompany.com/data/bp-2/batch/companyIds>
>                 ( 136648473 136648520 136648577 ) ;
>
> in the object position.
>
> val rec = sol["x"]
>
> ?x is a subject.
>
>     Andy
>
> On 24/03/17 20:35, Dmitri Pisarenko wrote:
>> Hello!
>>
>> I have a Jena-based database with an individual batch in it. A batch
>> is a structure, which has (among other things) a list companyIds
>> (elements are strings). In this particular example the batch number 1
>> has a list with following company IDs:
>>
>> 136648473
>> 136648520
>> 136648577
>>
>> My goal is to retrieve this list. For this, I execute the following
>> code:
>>
>>     open fun batchStatusLogic(ds: Dataset, batchId: Int):
>> FailableOperationResult<Bp2BatchStatus> {
>>         val sparql = """SELECT ?x
>>                             WHERE { ?x <$Bp2BatchNumber> $batchId }"""
>>         val query = createQuery(sparql)
>>         val qexec = createQueryExecution(ds, query)
>>         val rs = qexec.execSelect()
>>         if (!rs.hasNext()) {
>>             return FailableOperationResult<Bp2BatchStatus>(
>>                     false,
>>                     "Batch not found.",
>>                     null
>>             )
>>         }
>>         val sol = rs.nextSolution()
>>         val rec = sol["x"]
>>         val prop = findStatement(Bp2BatchCompanyIds, rec as Resource)
>>         if (prop == null) {
>>             return FailableOperationResult<Bp2BatchStatus>(
>>                     false,
>>                     "Company list not found.",
>>                     null
>>             )
>>         }
>>         val obj = prop.`object`
>>         if (!(obj is RDFList)) {
>>             return FailableOperationResult<Bp2BatchStatus>(false,
>> "Internal logic error.", null)
>>         }
>>
>> obj is not RDFList, but ResourceImpl with obj.enhGraph being
>> displayed as the XML given below.
>>
>> How can I read all elements of the list (136648473, 136648520,
>> 136648577) ?
>>
>> If there is a problem with the way the list is stored, please also tell.
>>
>> Thanks in advance
>>
>> Dmitri Pisarenko
>>
>> obj.enhGraph contents:
>>
>> <ModelCom  
>> {http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7
>> @http://www.w3.org/2001/vcard-rdf/3.0#EMAIL "d.a.pisarenko@bk.ru";
>> http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7
>> @http://www.w3.org/2001/vcard-rdf/3.0#N -1bac0f47:15a5c92e655:-7fff;
>> http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7
>> @http://mycompany.com/data/person/firstContactDateTime
>> "2017-02-20T17:30:15.515Z"^^http://www.w3.org/2001/XMLSchema#dateTime;
>> http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7
>> @http://mycompany.com/data/person/telegramUserId
>> "338329909"^^http://www.w3.org/2001/XMLSchema#integer;
>> http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7
>> @/bp1add "true"^^http://www.w3.org/2001/XMLSchema#boolean;
>> -1bac0f47:15a5c92e655:-7fff
>> @http://www.w3.org/2001/vcard-rdf/3.0#NICKNAME "mw";
>> http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd
>> @http://mycompany.com/data/bp-2/batch/batchNumber
>> "1"^^http://www.w3.org/2001/XMLSchema#integer;
>> http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd
>> @http://mycompany.com/data/bp-2/batch/persona "FD";
>> http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd
>> @http://mycompany.com/data/bp-2/batch/companyIds
>> 1d387ae6:15b01db5f1f:-7fff; 1d387ae6:15b01db5f1f:-7fff
>> @http://www.w3.org/1999/02/22-rdf-syntax-ns#first
>> "136648473"^^http://www.w3.org/2001/XMLSchema#integer;
>> 1d387ae6:15b01db5f1f:-7fff
>> @http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
>> 1d387ae6:15b01db5f1f:-7ffe; 1d387ae6:15b01db5f1f:-7ffe
>> @http://www.w3.org/1999/02/22-rdf-syntax-ns#first
>> "136648520"^^http://www.w3.org/2001/XMLSchema#integer;
>> 1d387ae6:15b01db5f1f:-7ffe
>> @http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
>> 1d387ae6:15b01db5f1f:-7ffd; 1d387ae6:15b01db5f1f:-7ffd
>> @http://www.w3.org/1999/02/22-rdf-syntax-ns#first
>> "136648577"^^http://www.w3.org/2001/XMLSchema#integer;
>> 1d387ae6:15b01db5f1f:-7ffd
>> @http://www.w3.org/1999/02/22-rdf-syntax-ns#rest
>> http://www.w3.org/1999/02/22-rdf-syntax-ns#nil} | 
>> [http://mycompany.com/data/p-7cc217
> a5-4d35-495c-880c-3d0a512eaaf7,
> http://www.w3.org/2001/vcard-rdf/3.0#EMAIL, "d.a.pisarenko@bk.ru"]
> [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7,
> http://www.w3.org/2001/vcard-rdf/3.0#N, -1bac0f47:15a5c92e655:-7fff]
> [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7,
> http://mycompany.com/data/person/firstContactDateTime,
> "2017-02-20T17:30:15.515Z"^^http://www.w3.org/2001/XMLSchema#dateTime]
> [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7,
> http://mycompany.com/data/person/telegramUserId,
> "338329909"^^http://www.w3.org/2001/XMLSchema#integer]
> [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7,
> /bp1add, "true"^^http://www.w3.org/2001/XMLSchema#boolean]
> [-1bac0f47:15a5c92e655:-7fff,
> http://www.w3.org/2001/vcard-rdf/3.0#NICKNAME, "mw"]
> [http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd,
> http://mycompany.com/data/bp-2/batch/batchNumber,
> "1"^^http://www.w3.org/2001/XMLSchema#integer]
> [http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd,
> http://mycompany.com/data/bp-2/batch/persona, "FD"]
> [http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd,
> http://mycompany.com/data/bp-2/batch/companyIds,
> 1d387ae6:15b01db5f1f:-7fff] [1d387ae6:15b01db5f1f:-7fff,
> http://www.w3.org/1999/02/22-rdf-syntax-ns#first,
> "136648473"^^http://www.w3.org/2001/XMLSchema#integer]
> [1d387ae6:15b01db5f1f:-7fff,
> http://www.w3.org/1999/02/22-rdf-syntax-ns#rest,
> 1d387ae6:15b01db5f1f:-7ffe] [1d387ae6:15b01db5f1f:-7ffe,
> http://www.w3.org/1999/02/22-rdf-syntax-ns#first,
> "136648520"^^http://www.w3.org/2001/XMLSchema#integer]
> [1d387ae6:15b01db5f1f:-7ffe,
> http://www.w3.org/1999/02/22-rdf-syntax-ns#rest,
> 1d387ae6:15b01db5f1f:-7ffd] [1d387ae6:15b01db5f1f:-7ffd,
> http://www.w3.org/1999/02/22-rdf-syntax-ns#first,
> "136648577"^^http://www.w3.org/2001/XMLSchema#integer]
> [1d387ae6:15b01db5f1f:-7ffd,
> http://www.w3.org/1999/02/22-rdf-syntax-ns#rest,
> http://www.w3.org/1999/02/22-rdf-syntax-ns#nil]>
>>
>
>
-- 
Lorenz B�hmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center


Re: How to read a list?

Posted by Andy Seaborne <an...@apache.org>.
Hi - could you print the data in a readable syntax such as Turtle? and a 
complete, self-contained example?

The list occurs at:

<http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd>
         <http://mycompany.com/data/bp-2/batch/companyIds>
                 ( 136648473 136648520 136648577 ) ;

in the object position.

val rec = sol["x"]

?x is a subject.

     Andy

On 24/03/17 20:35, Dmitri Pisarenko wrote:
> Hello!
>
> I have a Jena-based database with an individual batch in it. A batch is a structure, which has (among other things) a list companyIds (elements are strings). In this particular example the batch number 1 has a list with following company IDs:
>
> 136648473
> 136648520
> 136648577
>
> My goal is to retrieve this list. For this, I execute the following code:
>
>     open fun batchStatusLogic(ds: Dataset, batchId: Int): FailableOperationResult<Bp2BatchStatus> {
>         val sparql = """SELECT ?x
>                             WHERE { ?x <$Bp2BatchNumber> $batchId }"""
>         val query = createQuery(sparql)
>         val qexec = createQueryExecution(ds, query)
>         val rs = qexec.execSelect()
>         if (!rs.hasNext()) {
>             return FailableOperationResult<Bp2BatchStatus>(
>                     false,
>                     "Batch not found.",
>                     null
>             )
>         }
>         val sol = rs.nextSolution()
>         val rec = sol["x"]
>         val prop = findStatement(Bp2BatchCompanyIds, rec as Resource)
>         if (prop == null) {
>             return FailableOperationResult<Bp2BatchStatus>(
>                     false,
>                     "Company list not found.",
>                     null
>             )
>         }
>         val obj = prop.`object`
>         if (!(obj is RDFList)) {
>             return FailableOperationResult<Bp2BatchStatus>(false, "Internal logic error.", null)
>         }
>
> obj is not RDFList, but ResourceImpl with obj.enhGraph being displayed as the XML given below.
>
> How can I read all elements of the list (136648473, 136648520, 136648577) ?
>
> If there is a problem with the way the list is stored, please also tell.
>
> Thanks in advance
>
> Dmitri Pisarenko
>
> obj.enhGraph contents:
>
> <ModelCom   {http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://www.w3.org/2001/vcard-rdf/3.0#EMAIL "d.a.pisarenko@bk.ru"; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://www.w3.org/2001/vcard-rdf/3.0#N -1bac0f47:15a5c92e655:-7fff; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://mycompany.com/data/person/firstContactDateTime "2017-02-20T17:30:15.515Z"^^http://www.w3.org/2001/XMLSchema#dateTime; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://mycompany.com/data/person/telegramUserId "338329909"^^http://www.w3.org/2001/XMLSchema#integer; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @/bp1add "true"^^http://www.w3.org/2001/XMLSchema#boolean; -1bac0f47:15a5c92e655:-7fff @http://www.w3.org/2001/vcard-rdf/3.0#NICKNAME "mw"; http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd @http://mycompany.com/data/bp-2/batch/batchNumber "1"^^http://www.w3.org/2001/XMLSchema#integer; http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd @http://mycompany.com/data/bp-2/batch/persona "FD"; http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd @http://mycompany.com/data/bp-2/batch/companyIds 1d387ae6:15b01db5f1f:-7fff; 1d387ae6:15b01db5f1f:-7fff @http://www.w3.org/1999/02/22-rdf-syntax-ns#first "136648473"^^http://www.w3.org/2001/XMLSchema#integer; 1d387ae6:15b01db5f1f:-7fff @http://www.w3.org/1999/02/22-rdf-syntax-ns#rest 1d387ae6:15b01db5f1f:-7ffe; 1d387ae6:15b01db5f1f:-7ffe @http://www.w3.org/1999/02/22-rdf-syntax-ns#first "136648520"^^http://www.w3.org/2001/XMLSchema#integer; 1d387ae6:15b01db5f1f:-7ffe @http://www.w3.org/1999/02/22-rdf-syntax-ns#rest 1d387ae6:15b01db5f1f:-7ffd; 1d387ae6:15b01db5f1f:-7ffd @http://www.w3.org/1999/02/22-rdf-syntax-ns#first "136648577"^^http://www.w3.org/2001/XMLSchema#integer; 1d387ae6:15b01db5f1f:-7ffd @http://www.w3.org/1999/02/22-rdf-syntax-ns#rest http://www.w3.org/1999/02/22-rdf-syntax-ns#nil} |  [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, http://www.w3.org/2001/vcard-rdf/3.0#EMAIL, "d.a.pisarenko@bk.ru"] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, http://www.w3.org/2001/vcard-rdf/3.0#N, -1bac0f47:15a5c92e655:-7fff] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, http://mycompany.com/data/person/firstContactDateTime, "2017-02-20T17:30:15.515Z"^^http://www.w3.org/2001/XMLSchema#dateTime] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, http://mycompany.com/data/person/telegramUserId, "338329909"^^http://www.w3.org/2001/XMLSchema#integer] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, /bp1add, "true"^^http://www.w3.org/2001/XMLSchema#boolean] [-1bac0f47:15a5c92e655:-7fff, http://www.w3.org/2001/vcard-rdf/3.0#NICKNAME, "mw"] [http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd, http://mycompany.com/data/bp-2/batch/batchNumber, "1"^^http://www.w3.org/2001/XMLSchema#integer] [http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd, http://mycompany.com/data/bp-2/batch/persona, "FD"] [http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd, http://mycompany.com/data/bp-2/batch/companyIds, 1d387ae6:15b01db5f1f:-7fff] [1d387ae6:15b01db5f1f:-7fff, http://www.w3.org/1999/02/22-rdf-syntax-ns#first, "136648473"^^http://www.w3.org/2001/XMLSchema#integer] [1d387ae6:15b01db5f1f:-7fff, http://www.w3.org/1999/02/22-rdf-syntax-ns#rest, 1d387ae6:15b01db5f1f:-7ffe] [1d387ae6:15b01db5f1f:-7ffe, http://www.w3.org/1999/02/22-rdf-syntax-ns#first, "136648520"^^http://www.w3.org/2001/XMLSchema#integer] [1d387ae6:15b01db5f1f:-7ffe, http://www.w3.org/1999/02/22-rdf-syntax-ns#rest, 1d387ae6:15b01db5f1f:-7ffd] [1d387ae6:15b01db5f1f:-7ffd, http://www.w3.org/1999/02/22-rdf-syntax-ns#first, "136648577"^^http://www.w3.org/2001/XMLSchema#integer] [1d387ae6:15b01db5f1f:-7ffd, http://www.w3.org/1999/02/22-rdf-syntax-ns#rest, http://www.w3.org/1999/02/22-rdf-syntax-ns#nil]>
>

Re: How to read a list?

Posted by Dmitri Pisarenko <dp...@altruix.co>.
Hello, Lorenz!

Thanks for your answer.

Changing

val obj = prop.`object`

to

val obj = prop.`object`.`as`(RDFList::class.java)

did the trick.

> But I can't tell anymore without seeing method findStatement()

    open fun findStatement(property:String, resource:Resource):Statement? {
        val stmts = resource.model.listStatements()
        var res:Statement? = null
        while (stmts.hasNext() && (res == null)) {
            val stmt = stmts.nextStatement()
            if (stmt.predicate.uri == property) {
                res = stmt
            }
        }
        return res
    }

Question mark at the end of a type (e. g. Statement?) means that the respective variable may be null (res may be null, stmts is always non-null).

Best regards

Dmitri Pisarenko


25.03.2017, 14:15, "Lorenz B." <bu...@informatik.uni-leipzig.de>:
> According to your data it is in fact stored as RDFList. You could try to
> call
>
> obj.as( RDFList.class )
>
> since RDFList is a subinterface of Resource.
>
> But I can't tell anymore without seeing method findStatement()
>
>>  Hello!
>>
>>  I have a Jena-based database with an individual batch in it. A batch is a structure, which has (among other things) a list companyIds (elements are strings). In this particular example the batch number 1 has a list with following company IDs:
>>
>>  136648473
>>  136648520
>>  136648577
>>
>>  My goal is to retrieve this list. For this, I execute the following code:
>>
>>      open fun batchStatusLogic(ds: Dataset, batchId: Int): FailableOperationResult<Bp2BatchStatus> {
>>          val sparql = """SELECT ?x
>>                              WHERE { ?x <$Bp2BatchNumber> $batchId }"""
>>          val query = createQuery(sparql)
>>          val qexec = createQueryExecution(ds, query)
>>          val rs = qexec.execSelect()
>>          if (!rs.hasNext()) {
>>              return FailableOperationResult<Bp2BatchStatus>(
>>                      false,
>>                      "Batch not found.",
>>                      null
>>              )
>>          }
>>          val sol = rs.nextSolution()
>>          val rec = sol["x"]
>>          val prop = findStatement(Bp2BatchCompanyIds, rec as Resource)
>>          if (prop == null) {
>>              return FailableOperationResult<Bp2BatchStatus>(
>>                      false,
>>                      "Company list not found.",
>>                      null
>>              )
>>          }
>>          val obj = prop.`object`
>>          if (!(obj is RDFList)) {
>>              return FailableOperationResult<Bp2BatchStatus>(false, "Internal logic error.", null)
>>          }
>>
>>  obj is not RDFList, but ResourceImpl with obj.enhGraph being displayed as the XML given below.
>>
>>  How can I read all elements of the list (136648473, 136648520, 136648577) ?
>>
>>  If there is a problem with the way the list is stored, please also tell.
>>
>>  Thanks in advance
>>
>>  Dmitri Pisarenko
>>
>>  obj.enhGraph contents:
>>
>>  <ModelCom {http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://www.w3.org/2001/vcard-rdf/3.0#EMAIL "d.a.pisarenko@bk.ru"; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://www.w3.org/2001/vcard-rdf/3.0#N -1bac0f47:15a5c92e655:-7fff; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://mycompany.com/data/person/firstContactDateTime "2017-02-20T17:30:15.515Z"^^http://www.w3.org/2001/XMLSchema#dateTime; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://mycompany.com/data/person/telegramUserId "338329909"^^http://www.w3.org/2001/XMLSchema#integer; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @/bp1add "true"^^http://www.w3.org/2001/XMLSchema#boolean; -1bac0f47:15a5c92e655:-7fff @http://www.w3.org/2001/vcard-rdf/3.0#NICKNAME "mw"; http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd @http://mycompany.com/data/bp-2/batch/batchNumber "1"^^http://www.w3.org/2001/XMLSchema#integer; http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd @http://mycompany.com/data/bp-2/batch/persona "FD"; http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd @http://mycompany.com/data/bp-2/batch/companyIds 1d387ae6:15b01db5f1f:-7fff; 1d387ae6:15b01db5f1f:-7fff @http://www.w3.org/1999/02/22-rdf-syntax-ns#first "136648473"^^http://www.w3.org/2001/XMLSchema#integer; 1d387ae6:15b01db5f1f:-7fff @http://www.w3.org/1999/02/22-rdf-syntax-ns#rest 1d387ae6:15b01db5f1f:-7ffe; 1d387ae6:15b01db5f1f:-7ffe @http://www.w3.org/1999/02/22-rdf-syntax-ns#first "136648520"^^http://www.w3.org/2001/XMLSchema#integer; 1d387ae6:15b01db5f1f:-7ffe @http://www.w3.org/1999/02/22-rdf-syntax-ns#rest 1d387ae6:15b01db5f1f:-7ffd; 1d387ae6:15b01db5f1f:-7ffd @http://www.w3.org/1999/02/22-rdf-syntax-ns#first "136648577"^^http://www.w3.org/2001/XMLSchema#integer; 1d387ae6:15b01db5f1f:-7ffd @http://www.w3.org/1999/02/22-rdf-syntax-ns#rest http://www.w3.org/1999/02/22-rdf-syntax-ns#nil} | [http://mycompany.com/data/p-7cc217a5
>>  -4d35-495c-880c-3d0a512eaaf7, http://www.w3.org/2001/vcard-rdf/3.0#EMAIL, "d.a.pisarenko@bk.ru"] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, http://www.w3.org/2001/vcard-rdf/3.0#N, -1bac0f47:15a5c92e655:-7fff] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, http://mycompany.com/data/person/firstContactDateTime, "2017-02-20T17:30:15.515Z"^^http://www.w3.org/2001/XMLSchema#dateTime] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, http://mycompany.com/data/person/telegramUserId, "338329909"^^http://www.w3.org/2001/XMLSchema#integer] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, /bp1add, "true"^^http://www.w3.org/2001/XMLSchema#boolean] [-1bac0f47:15a5c92e655:-7fff, http://www.w3.org/2001/vcard-rdf/3.0#NICKNAME, "mw"] [http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd, http://mycompany.com/data/bp-2/batch/batchNumber, "1"^^http://www.w3.org/2001/XMLSchema#integer] [http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd, http://mycompany.com/data/bp-2/batch/persona, "FD"] [http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd, http://mycompany.com/data/bp-2/batch/companyIds, 1d387ae6:15b01db5f1f:-7fff] [1d387ae6:15b01db5f1f:-7fff, http://www.w3.org/1999/02/22-rdf-syntax-ns#first, "136648473"^^http://www.w3.org/2001/XMLSchema#integer] [1d387ae6:15b01db5f1f:-7fff, http://www.w3.org/1999/02/22-rdf-syntax-ns#rest, 1d387ae6:15b01db5f1f:-7ffe] [1d387ae6:15b01db5f1f:-7ffe, http://www.w3.org/1999/02/22-rdf-syntax-ns#first, "136648520"^^http://www.w3.org/2001/XMLSchema#integer] [1d387ae6:15b01db5f1f:-7ffe, http://www.w3.org/1999/02/22-rdf-syntax-ns#rest, 1d387ae6:15b01db5f1f:-7ffd] [1d387ae6:15b01db5f1f:-7ffd, http://www.w3.org/1999/02/22-rdf-syntax-ns#first, "136648577"^^http://www.w3.org/2001/XMLSchema#integer] [1d387ae6:15b01db5f1f:-7ffd, http://www.w3.org/1999/02/22-rdf-syntax-ns#rest, http://www.w3.org/1999/02/22-rdf-syntax-ns#nil]>
> --
> Lorenz Bühmann
> AKSW group, University of Leipzig
> Group: http://aksw.org - semantic web research center

Re: How to read a list?

Posted by "Lorenz B." <bu...@informatik.uni-leipzig.de>.
According to your data it is in fact stored as RDFList. You could try to
call

obj.as( RDFList.class )

since RDFList is a subinterface of Resource.


But I can't tell anymore without seeing method findStatement()

> Hello!
>
> I have a Jena-based database with an individual batch in it. A batch is a structure, which has (among other things) a list companyIds (elements are strings). In this particular example the batch number 1 has a list with following company IDs:
>
> 136648473
> 136648520
> 136648577
>
> My goal is to retrieve this list. For this, I execute the following code:
>
>     open fun batchStatusLogic(ds: Dataset, batchId: Int): FailableOperationResult<Bp2BatchStatus> {
>         val sparql = """SELECT ?x
>                             WHERE { ?x <$Bp2BatchNumber> $batchId }"""
>         val query = createQuery(sparql)
>         val qexec = createQueryExecution(ds, query)
>         val rs = qexec.execSelect()
>         if (!rs.hasNext()) {
>             return FailableOperationResult<Bp2BatchStatus>(
>                     false,
>                     "Batch not found.",
>                     null
>             )
>         }
>         val sol = rs.nextSolution()
>         val rec = sol["x"]
>         val prop = findStatement(Bp2BatchCompanyIds, rec as Resource)
>         if (prop == null) {
>             return FailableOperationResult<Bp2BatchStatus>(
>                     false,
>                     "Company list not found.",
>                     null
>             )
>         }
>         val obj = prop.`object`
>         if (!(obj is RDFList)) {
>             return FailableOperationResult<Bp2BatchStatus>(false, "Internal logic error.", null)
>         }
>
> obj is not RDFList, but ResourceImpl with obj.enhGraph being displayed as the XML given below.
>
> How can I read all elements of the list (136648473, 136648520, 136648577) ?
>
> If there is a problem with the way the list is stored, please also tell.
>
> Thanks in advance
>
> Dmitri Pisarenko
>
> obj.enhGraph contents:
>
> <ModelCom   {http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://www.w3.org/2001/vcard-rdf/3.0#EMAIL "d.a.pisarenko@bk.ru"; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://www.w3.org/2001/vcard-rdf/3.0#N -1bac0f47:15a5c92e655:-7fff; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://mycompany.com/data/person/firstContactDateTime "2017-02-20T17:30:15.515Z"^^http://www.w3.org/2001/XMLSchema#dateTime; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @http://mycompany.com/data/person/telegramUserId "338329909"^^http://www.w3.org/2001/XMLSchema#integer; http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7 @/bp1add "true"^^http://www.w3.org/2001/XMLSchema#boolean; -1bac0f47:15a5c92e655:-7fff @http://www.w3.org/2001/vcard-rdf/3.0#NICKNAME "mw"; http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd @http://mycompany.com/data/bp-2/batch/batchNumber "1"^^http://www.w3.org/2001/XMLSchema#integer; http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd @http://mycompany.com/data/bp-2/batch/persona "FD"; http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd @http://mycompany.com/data/bp-2/batch/companyIds 1d387ae6:15b01db5f1f:-7fff; 1d387ae6:15b01db5f1f:-7fff @http://www.w3.org/1999/02/22-rdf-syntax-ns#first "136648473"^^http://www.w3.org/2001/XMLSchema#integer; 1d387ae6:15b01db5f1f:-7fff @http://www.w3.org/1999/02/22-rdf-syntax-ns#rest 1d387ae6:15b01db5f1f:-7ffe; 1d387ae6:15b01db5f1f:-7ffe @http://www.w3.org/1999/02/22-rdf-syntax-ns#first "136648520"^^http://www.w3.org/2001/XMLSchema#integer; 1d387ae6:15b01db5f1f:-7ffe @http://www.w3.org/1999/02/22-rdf-syntax-ns#rest 1d387ae6:15b01db5f1f:-7ffd; 1d387ae6:15b01db5f1f:-7ffd @http://www.w3.org/1999/02/22-rdf-syntax-ns#first "136648577"^^http://www.w3.org/2001/XMLSchema#integer; 1d387ae6:15b01db5f1f:-7ffd @http://www.w3.org/1999/02/22-rdf-syntax-ns#rest http://www.w3.org/1999/02/22-rdf-syntax-ns#nil} |  [http://mycompany.com/data/p-7cc217a5
> -4d35-495c-880c-3d0a512eaaf7, http://www.w3.org/2001/vcard-rdf/3.0#EMAIL, "d.a.pisarenko@bk.ru"] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, http://www.w3.org/2001/vcard-rdf/3.0#N, -1bac0f47:15a5c92e655:-7fff] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, http://mycompany.com/data/person/firstContactDateTime, "2017-02-20T17:30:15.515Z"^^http://www.w3.org/2001/XMLSchema#dateTime] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, http://mycompany.com/data/person/telegramUserId, "338329909"^^http://www.w3.org/2001/XMLSchema#integer] [http://mycompany.com/data/p-7cc217a5-4d35-495c-880c-3d0a512eaaf7, /bp1add, "true"^^http://www.w3.org/2001/XMLSchema#boolean] [-1bac0f47:15a5c92e655:-7fff, http://www.w3.org/2001/vcard-rdf/3.0#NICKNAME, "mw"] [http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd, http://mycompany.com/data/bp-2/batch/batchNumber, "1"^^http://www.w3.org/2001/XMLSchema#integer] [http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd, http://mycompany.com/data/bp-2/batch/persona, "FD"] [http://mycompany.com/data/bp-2/b-7406478b-9c33-4b51-bb46-3b854fc633cd, http://mycompany.com/data/bp-2/batch/companyIds, 1d387ae6:15b01db5f1f:-7fff] [1d387ae6:15b01db5f1f:-7fff, http://www.w3.org/1999/02/22-rdf-syntax-ns#first, "136648473"^^http://www.w3.org/2001/XMLSchema#integer] [1d387ae6:15b01db5f1f:-7fff, http://www.w3.org/1999/02/22-rdf-syntax-ns#rest, 1d387ae6:15b01db5f1f:-7ffe] [1d387ae6:15b01db5f1f:-7ffe, http://www.w3.org/1999/02/22-rdf-syntax-ns#first, "136648520"^^http://www.w3.org/2001/XMLSchema#integer] [1d387ae6:15b01db5f1f:-7ffe, http://www.w3.org/1999/02/22-rdf-syntax-ns#rest, 1d387ae6:15b01db5f1f:-7ffd] [1d387ae6:15b01db5f1f:-7ffd, http://www.w3.org/1999/02/22-rdf-syntax-ns#first, "136648577"^^http://www.w3.org/2001/XMLSchema#integer] [1d387ae6:15b01db5f1f:-7ffd, http://www.w3.org/1999/02/22-rdf-syntax-ns#rest, http://www.w3.org/1999/02/22-rdf-syntax-ns#nil]>
>
>
-- 
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center