On 18/10/2022 23:11, [email protected] wrote:
Hi Andy,
I seem to have a configuration that's working, where my named graphs are
persisting. See new config file below. However, it's horribly slow. I am
running Java code which is reading 60,000 records and running SPARQL queries
and updates viathe REST API. It will eventually will produce 5 million triples.
The further along it gets, the slower it's working. It's about 1/3 done now and
down to less than 1 update per second.
My ja:rdfsSchema file is large. It contains my full ontology and some reference
data, which is large (about 90K axions). I'm not sure that's a factor,
however, since the slowdown seems to be based on the number of triples loaded.
But I still don't understand this schema stuff, since inferencing isn't going
to work with my query unless I've also loaded the full ontology into a named
graph that the query references. What really needs to be in the schema file?
Appreciate any help.
If you want only
?s rdfs:subClassOf+ ?c .
you can ask that in the SPARQL query - no inference needed - except it
won't get reused across queries.
If you add ja:DatasetRDFS, you don't need, and shouldn't use, the "+".
> and some reference data
ja:DatasetRDFS assumes schema and data are separate.
It isn't a general RDFS reasoner - it assumes a fixed schema, and large
data.
Andy
Thanks,
Ted
Theodore Hills
Consultant | Research
Phone: +1 212 296-1833
[email protected]
## Fuseki Server configuration file.
PREFIX fuseki: <http://jena.apache.org/fuseki#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX tdb1: <http://jena.hpl.hp.com/2008/tdb#>
PREFIX tdb2: <http://jena.apache.org/2016/tdb#>
PREFIX ja: <http://jena.hpl.hp.com/2005/11/Assembler#>
PREFIX : <#>
<#service1> rdf:type fuseki:Service ;
fuseki:name "msro" ; # http://host:port/msro
fuseki:endpoint [ # http://host:port/msro/sparql?query=
fuseki:operation fuseki:query ;
fuseki:name "sparql"
] ;
fuseki:endpoint [ # http://host:port/msro/query?query=
# SPARQL query service (alt name)
fuseki:operation fuseki:query ;
fuseki:name "query"
] ;
fuseki:endpoint [ # http://host:port/msro/update?query=
# SPARQL update service
fuseki:operation fuseki:update ;
fuseki:name "update"
] ;
fuseki:endpoint [
# SPARQL Graph Store Protocol (read)
fuseki:operation fuseki:gsp_r ;
fuseki:name "get"
] ;
fuseki:endpoint [
# SPARQL Graph Store Protcol (read and write)
# http://host:port/msro/data?default or
http://host:port/msro/data?graph=<URL>
fuseki:operation fuseki:gsp_rw ;
fuseki:name "data"
] ;
fuseki:dataset <#dataset> ;
.
<#dataset> rdf:type ja:DatasetRDFS ;
ja:rdfsSchema
<file:///c:/MSDE/hillsthe/msrows/eqr/msro/eqr.msro/resources/msRoAll.ttl> ;
ja:dataset <#actualDataset> ;
.
<#actualDataset> rdf:type tdb2:DatasetTDB2; # for example.
tdb2:location "C:\\Users\\hillsthe\\run\\data\\tdb2";
.
-----Original Message-----
From: Hills, Theodore (Research)
Sent: Monday, October 17, 2022 6:02 PM
To: Andy Seaborne <[email protected]>
Cc: [email protected]
Subject: RE: TDB2 Data Doesn't Persist
Hi Andy,
Thanks again for the reply. This seems quite odd to me, so let me check my
understanding.
When persistence is not an issue, RDFS inferencing without axioms works fine in
a named graph--actually, across three named graphs. I use one of the named
graphs for the vocabulary, and two for data.
But if I want my named graph to persist, and because I am using inferencing, I
have to define my named graph in the assembler (config file).
Question: Do I need to put the named graph URL in the config file? If so, I
can't tell from the documentation where to put that. Insights appreciated.
Thanks,
Ted
Theodore Hills
Consultant | Research
Phone: +1 212 296-1833
[email protected]
-----Original Message-----
From: Andy Seaborne <[email protected]>
Sent: Monday, October 17, 2022 4:25 PM
To: Hills, Theodore (Research) <[email protected]>
Cc: [email protected]
Subject: Re: TDB2 Data Doesn't Persist
Hi Theordore,
<#dataset> rdf:type ja:RDFDataset;
ja:defaultGraph <#inferenceModel>
.
defines a dataset with just a default graph. It does not pass down named
graphs. They end up in a temporary holder.
You can add the name graph to the ja:RDFDataset but you have to know it's name
and define the inference. Inference is per-graph.
There is
https://jena.apache.org/documentation/rdfs/
# RDFS
:rdfsDataset rdf:type ja:DatasetRDFS ;
ja:rdfsSchema <file:vocabulary.ttl>;
ja:dataset --- some TDB2 database ---
.
This applies RDFS - without axioms - so rdfs:subClassOf, rdf:subPropertyOf,
rdfs:domain and rdfs:range - to all graphs in the ja:database.
The schema is fixed at startup.
Andy
On 17/10/2022 14:39, [email protected] wrote:
Hi Andy,
Thank you for the prompt reply.
I deleted everything in my tdb2 directory in order to force Fuseki to recreate
the database from scratch so I knew I was working from a clean slate.
I was able to duplicate your results, using my own D.ttl, which is below.
<http://triples.ms.com/msro/dummy> <http://www.w3.org/2001/XMLSchema#string>
"dummy" .
I then loaded the dummy triple into a named graph using the curl command below.
curl -T D.ttl --header 'Content-type: text/turtle' \
'http://localhost:3030/msro/data?graph=https%3A%2F%2Ftriples.ms.com%2Fmsro%2F__dummy__'
I was able to dump the named graph using the command below.
curl
'http://localhost:3030/msro/data?graph=https%3A%2F%2Ftriples.ms.com%2Fmsro%2F__dummy__'
I then stopped and restarted Fuseki, and the triple in the named graph was
gone. The triple in the default graph was still there.
Also, I monitored the size of Data-0001\nodes-data.obj at every step. Upon
creation of a fresh database, it was 0 KB. It remained 0 KB even if I loaded my
dummy triple into a named graph. Only when I loaded my dummy triple into the
default graph did it grow to 1 KB. It remained 1KB across restarts.
So, the problem seems to be that triples in the default graph persist, but
triples in named graphs do not.
The only inferencing I need is subclass inferencing in order for a query of
this form to work:
?s rdfs:subClassOf+ ?c .
Once I layered in the TransitiveReasoner in the config file, the above query
worked fine in the midst of a complicated and well-tested query that runs fine
on Stardog and MarkLogic. As mentioned, I was getting the desired results on
Fuseki TDB2 as well. The only problem seems to be the lack of persistence for
named graphs.
Thanks so much for your attention to this problem!
Theodore Hills
Consultant | Research
Phone: +1 212 296-1833
[email protected]
-----Original Message-----
From: Andy Seaborne <[email protected]>
Sent: Saturday, October 15, 2022 5:41 AM
To: [email protected]
Subject: Re: TDB2 Data Doesn't Persist
Hi Theodore,
I tried your configuration and got persisted data.
I tried:
curl -T D.ttl --header 'Content-type: text/turtle' \
'http://localhost:3030/msro/data?default'
this appeared in the file:
[2022-10-15 10:36:19] Fuseki INFO [3] Body: Content-Length=338,
Content-Type=text/turtle, Charset=null => Turtle : Count=4 Triples=4
Quads=0
(reformatted for email).
then I stopped the server, restarted it and did
curl 'http://localhost:3030/msro/data?default'
and got the data with inference output.
How are you loading the data?
Looking in "C:\\Users\\hillsthe\\run\\data\\tdb2", there is a file
Data-0001/nodes-data.obj. How big it is it after loading the data? You can look while the
server is running. Does it shrink when the server is stopped? It's zero bytes for an
empty database, non-zero otherwise.
----
Also - for general information - you're using the transitive reasoner What
inferences are you hoping to generate?
Andy
On 14/10/2022 15:09, [email protected] wrote:
Hello,
I have Apache Jena Fuseki running on my localhost with TDB2 configured with
inferencing. See entire config file below. I am running Fuseki server under
Windows 10 with the following command line issued from a CMD prompt.
C:\Users\hillsthe\apache-jena-fuseki-4.6.1\fuseki-server.bat --conf
C:\Users\hillsthe\config.ttl
I can do updates and queries and everything works as expected. However, if I
stop the Fuseki server with a Control-C, and restart it with the above command,
my graphs are empty. Any insights?
Theodore Hills
Consultant | Research
Phone: +1 212 296-1833
[email protected]<mailto:Theodore.Hills@morganstanley.
c
om>
## Fuseki Server configuration file.
PREFIX fuseki: http://jena.apache.org/fuseki#
PREFIX rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
PREFIX rdfs: http://www.w3.org/2000/01/rdf-schema#
PREFIX tdb1: http://jena.hpl.hp.com/2008/tdb#
PREFIX tdb2: http://jena.apache.org/2016/tdb#
PREFIX ja: http://jena.hpl.hp.com/2005/11/Assembler#
PREFIX : <#>
<#service1> rdf:type fuseki:Service ;
fuseki:name "msro" ; # http://host:port/msro
fuseki:endpoint [ # http://host:port/msro/sparql?query=
fuseki:operation fuseki:query ;
fuseki:name "sparql"
] ;
fuseki:endpoint [ # http://host:port/msro/query?query=
# SPARQL query service (alt name)
fuseki:operation fuseki:query ;
fuseki:name "query"
] ;
fuseki:endpoint [ # http://host:port/msro/update?query=
# SPARQL update service
fuseki:operation fuseki:update ;
fuseki:name "update"
] ;
fuseki:endpoint [
# SPARQL Graph Store Protocol (read)
fuseki:operation fuseki:gsp_r ;
fuseki:name "get"
] ;
fuseki:endpoint [
# SPARQL Graph Store Protcol (read and write)
# http://host:port/msro/data?default or
http://host:port/msro/data?graph=<URL<http://host:port/msro/data?graph=%3cURL>>
fuseki:operation fuseki:gsp_rw ;
fuseki:name "data"
] ;
fuseki:dataset <#dataset> ;
.
<#dataset> rdf:type ja:RDFDataset;
ja:defaultGraph <#inferenceModel>
.
<#inferenceModel> rdf:type ja:InfModel;
ja:reasoner [ ja:reasonerURL
http://jena.hpl.hp.com/2003/TransitiveReasoner ];
ja:baseModel <#baseModel>;
.
<#baseModel> rdf:type tdb2:GraphTDB2;
tdb2:dataset <#actualDataset> .
<#actualDataset> rdf:type tdb2:DatasetTDB2;
tdb2:location "C:\\Users\\hillsthe\\run\\data\\tdb2";
.
________________________________
For important information including analyst certification and disclosures
regarding specific companies, derivatives, or other instruments discussed in
this email, please refer to the latest report, if attached and/or hyperlinked
to this email, or by logging on to the Morgan Stanley Matrix Platform at
http://matrix.ms.com/eqr/research . You may also refer to the Morgan Stanley
Research Disclosure Website at
http://www.morganstanley.com/eqr/disclosures/webapp/coverage. Morgan Stanley
will make certain research products and announcements available only on the
Morgan Stanley Matrix Platform. The content provided in this email, including
data or any attachments, is subject to the terms and conditions of use
(available at
https://ny.matrix.ms.com/matrix/portal/docs/terms/index.html#/terms/general )
applicable to research materials accessed through Matrix, including the terms
regarding confidentiality and intellectual property rights. For access to the
Morgan Stanley Matrix Platform please contact your sales representative or go
to Matrix.
NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or
views contained herein are not intended to be, and do not constitute, advice
within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and
Consumer Protection Act. If you have received this communication in error,
please destroy all electronic and paper copies and notify the sender
immediately. Mistransmission is not intended to waive confidentiality or
privilege. Morgan Stanley reserves the right, to the extent permitted under
applicable law, to monitor electronic communications. This message is subject
to terms available at the following link:
http://www.morganstanley.com/disclaimers If you cannot access these links,
please notify us by reply message and we will send the contents to you. By
messaging with Morgan Stanley you consent to the foregoing.
You may have certain rights regarding the information that Morgan Stanley
collects about you. Please see our Privacy Pledge
https://www.morganstanley.com/privacy-pledge for more information about your
rights.
----------------------------------------------------------------------
----------
For important information including analyst certification and disclosures
regarding specific companies, derivatives, or other instruments discussed in
this email, please refer to the latest report, if attached and/or hyperlinked
to this email, or by logging on to the Morgan Stanley Matrix Platform at
http://matrix.ms.com/eqr/research . You may also refer to the Morgan Stanley
Research Disclosure Website at
http://www.morganstanley.com/eqr/disclosures/webapp/coverage. Morgan Stanley
will make certain research products and announcements available only on the
Morgan Stanley Matrix Platform. The content provided in this email, including
data or any attachments, is subject to the terms and conditions of use
(available at
https://ny.matrix.ms.com/matrix/portal/docs/terms/index.html#/terms/general )
applicable to research materials accessed through Matrix, including the terms
regarding confidentiality and intellectual property rights. For access to the
Morgan Stanley Matrix Platform please contact your sales representative or go
to Matrix.
NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or
views contained herein are not intended to be, and do not constitute, advice
within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and
Consumer Protection Act. If you have received this communication in error,
please destroy all electronic and paper copies and notify the sender
immediately. Mistransmission is not intended to waive confidentiality or
privilege. Morgan Stanley reserves the right, to the extent permitted under
applicable law, to monitor electronic communications. This message is subject
to terms available at the following link:
http://www.morganstanley.com/disclaimers If you cannot access these links,
please notify us by reply message and we will send the contents to you. By
messaging with Morgan Stanley you consent to the foregoing.
You may have certain rights regarding the information that Morgan Stanley
collects about you. Please see our Privacy Pledge
https://www.morganstanley.com/privacy-pledge for more information about your
rights.
--------------------------------------------------------------------------------
For important information including analyst certification and disclosures
regarding specific companies, derivatives, or other instruments discussed in
this email, please refer to the latest report, if attached and/or hyperlinked
to this email, or by logging on to the Morgan Stanley Matrix Platform at
http://matrix.ms.com/eqr/research . You may also refer to the Morgan Stanley
Research Disclosure Website at
http://www.morganstanley.com/eqr/disclosures/webapp/coverage. Morgan Stanley
will make certain research products and announcements available only on the
Morgan Stanley Matrix Platform. The content provided in this email, including
data or any attachments, is subject to the terms and conditions of use
(available at
https://ny.matrix.ms.com/matrix/portal/docs/terms/index.html#/terms/general )
applicable to research materials accessed through Matrix, including the terms
regarding confidentiality and intellectual property rights. For access to the
Morgan Stanley Matrix Platform please contact your sales representative or go
to Matrix.
NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or
views contained herein are not intended to be, and do not constitute, advice
within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and
Consumer Protection Act. If you have received this communication in error,
please destroy all electronic and paper copies and notify the sender
immediately. Mistransmission is not intended to waive confidentiality or
privilege. Morgan Stanley reserves the right, to the extent permitted under
applicable law, to monitor electronic communications. This message is subject
to terms available at the following link:
http://www.morganstanley.com/disclaimers If you cannot access these links,
please notify us by reply message and we will send the contents to you. By
messaging with Morgan Stanley you consent to the foregoing.
You may have certain rights regarding the information that Morgan Stanley
collects about you. Please see our Privacy Pledge
https://www.morganstanley.com/privacy-pledge for more information about your
rights.