On Nov 5, 2015, at 11:02 AM, Andy Seaborne <[email protected]> wrote:
> On 05/11/15 15:44, A. Soroka wrote:
>> Yeah, I basically copied the “parallel semantics” of ja:graph and 
>> ja:defaultGraph from DatasetAssembler. Perhaps I misunderstood them?
> If you think it's a problem, do you have a better name?

I’m now a bit confused about what they mean and what ja:data is supposed to 
mean, and I don’t want to spread my confusion any further! {grin} To (try to) 
get some clarity: are they supposed to have the same meaning (they do now in my 
PR, and I really think they do in DatasetAssembler)? If they are supposed to 
have a different meaning, and one of those meanings is “load from this URI”, 
what is the difference in that and the newly-introduced ja:data predicate?

>> 
>> I will definitely gin up some file-based examples. Is there a standard way 
>> to do that in Jena tests? I.e. should I put documents in the test classpath, 
>> or something else?
> 
> See all the testing/ directories.

Thanks! I’ll get myself up to speed on this style of testing.

---
A. Soroka
The University of Virginia Library

> 
> They could go in src/test/resources but as they are loaded a plain files from 
> testing/ it's more realistic.
> 
> For lots of files and manifests its easier.
> 
> And the base URI issues of class loaded resources are horrible.
> 
>       Andy
> 
>> 
>> ---
>> A. Soroka
>> The University of Virginia Library
>> 
>>> On Nov 5, 2015, at 10:35 AM, Andy Seaborne <[email protected]> wrote:
>>> 
>>> Hi there,
>>> 
>>> I got ja:data working but ja:graph alluded me.  After some code digging, it 
>>> seems it is a synonym for ja:defaultGraph but ja:defaultGraph goes to a 
>>> full-blown model description.
>>> 
>>> Tests from files would be good and they can be used in documentation 
>>> examples as well.
>>> 
>>> -----------------------
>>> @prefix ja:    <http://jena.hpl.hp.com/2005/11/Assembler#> .
>>> 
>>> <test:simpleExample>  a  ja:MemoryDataset ;
>>>        ja:data          <file:data.trig> ;
>>>        ja:data          <file:data1.ttl> ;
>>>        ja:graph        [ ja:data <file:data2.ttl> ] ;
>>>        ja:graph
>>>            [ ja:graphName  <http://example/g3> ;
>>>              ja:data <file:data3.ttl> ] ;
>>>        .
>>> -----------------------
>>> 
>>> and I tried:
>>> 
>>>   DatasetFactory.assemble("assembler.ttl") ;
>>> 
>>> OK - wiring not in place yet
>>> then
>>> 
>>>    Model m = RDFDataMgr.loadModel("assembler.ttl") ;
>>>    Resource r = m.createResource("test:simpleExample") ;
>>>    Dataset ds = (Dataset)new InMemDatasetAssembler().open(r) ;
>>> 
>>> I was expecting ja:graph to be a direct description - not needing a 
>>> ja:MemoryModel description
>>> 
>>> ja:graph is needed to associate a name with a triples file.
>>> 
>>> I took a go at an implementation:
>>> ---------------------
>>> 
>>> open( ...) {
>>>   ...
>>>   // Instead of: final Resource defaultGraphDef =
>>> 
>>>   multiValueResource(root, pGraph)
>>>         .forEach(r->readGraphDesc(dataset, r));
>>>   ...
>>> 
>>> 
>>> 
>>> }
>>> 
>>> // May need better checking for expected Resource/String things.
>>> private void readGraphDesc(Dataset dataset, Resource r) {
>>>    String gn = null ;
>>>    if ( r.hasProperty(pGraphName)) {
>>>        Resource rgn = r.getProperty(pGraphName).getResource() ;
>>>        gn = rgn.getURI() ;
>>>     }
>>>     String dataFn = getAsStringValue(r, data) ;
>>>     if ( gn == null )
>>>         RDFDataMgr.read(dataset.getDefaultModel(), dataFn);
>>>     else
>>>         RDFDataMgr.read(dataset.getNamedModel(gn), dataFn);
>>>    }
>>> ---------------------
>>> 
>>>     Andy
>>> 
>>> On 02/11/15 16:44, A. Soroka wrote:
>>>> I’ve added “direct data links” in the style Andy outlines below to this 
>>>> JENA-624 PR, with tests.
>>>> 
>>>> Feedback eagerly desired!
>>>> 
>>>> ---
>>>> A. Soroka
>>>> The University of Virginia Library
>>>> 
>>>>> On Oct 30, 2015, at 3:05 PM, Andy Seaborne <[email protected]> wrote:
>>>>> 
>>>>>> Does this seem like a reasonable approach? It should allow users to
>>>>>> build up their data by whatever means they like, including using
>>>>>> inferencing models to generate assertions, then add them to the
>>>>>> in-memory container.
>>>>> 
>>>>> That's an interesting possibility that hadn't occurred to me.  It's a 
>>>>> copy-in and the implications of that will need to be clear.
>>>>> 
>>>>> Just relying on ja:MemoryModel and ja:externalContent for the cases of 
>>>>> loading files risks a load-copy though.  It could be "optimzied"
>>>>> 
>>>>> What about allowing files to be directly pointed to from the assembler 
>>>>> for the ja:MemoryDataset?
>>>>> 
>>>>> Example:
>>>>> 
>>>>> -----------------------------------
>>>>> @prefix ja:    <http://jena.hpl.hp.com/2005/11/Assembler#> .
>>>>> 
>>>>> <test:simpleExample>  a  ja:MemoryDataset ;
>>>>>        ja:data          <file:///some/data.trig> ;
>>>>>        ja:data          <file:///some/data.ttl> ;
>>>>>        ja:graph         [ ja:data <file:///some/data2.ttl> ] ;
>>>>>        ja:graph
>>>>>             [ ja:graphName  <test:namedGraphExample> ;
>>>>>               ja:data <file:///some/data3.ttl> ] .
>>>>> -----------------------------------
>>>>> 
>>>>> The ability to load trig, NQuads in the dataset:
>>>>> 
>>>>>        ja:data          <file:///some/data.trig> ;
>>>>> 
>>>>> If a triples form is given, it loads the default graph. This is what Jena 
>>>>> does already.  These are both RDFDataMgr.read(dataset, file) ;
>>>>> 
>>>>> The ja:graph for specific graphs:
>>>>> Default graph (uniformity):
>>>>> 
>>>>>        ja:graph         [ ja:data <file:///some/data2.ttl> ] ;
>>>>> 
>>>>> and named graphs
>>>>>        ja:graph
>>>>>                [ ja:graphName  <test:namedGraphExample> ;
>>>>>                  ja:data <file:///some/data3.ttl> ] .
>>>>> 
>>>>> I like the build-copy idea - these also add the core tasks of loading a 
>>>>> file into a  dataset in a direct way.
>>>>> 
>>>>> Thoughts?
>>>>> 
>>>>>   Andy
>>>>> 
>>>>>> 
>>>>>> --- A. Soroka The University of Virginia Library
>>>>> 
>>>>> Prefixes !!!!!!!!!!!!!1
>>>>> 
>>>>> @prefix ja:    <http://jena.hpl.hp.com/2005/11/Assembler#> .
>>>>> 
>>>>> <test:simpleExample>  a  ja:MemoryDataset ;
>>>>>        ja:defaultGraph  <test:defaultGraphDef> ;
>>>>>        ja:namedGraph    <test:namedGraphDef> .
>>>>> 
>>>>> <test:defaultGraphDef>
>>>>>        a           ja:MemoryModel ;
>>>>>        ja:content  [ ja:externalContent  <file:///some/triples.nt> ] .
>>>>> 
>>>>> <test:namedGraphDef>  a  ja:MemoryModel ;
>>>>>        ja:content
>>>>>             [ ja:externalContent  <file:///some/other/triples.nt> ] ;
>>>>>        ja:graphName  <test:namedGraphExample> .
>>>> 
>>> 
>> 
> 

Reply via email to