Comments (6)
Hi @craigdietrich, can you provide us a working exploit of the problem? A minimal graph + the code you use to query the database would be helpful.
from arc2.
Thanks for your quick reply, @k00ni! I'll put together an example and get back to you soon.
from arc2.
Following up on this, I think I figured out the problem. All of our ARC2 databases were created a number of year ago, even through we've updated the libraries along the way (currently at the most recent release).
It looks like in some of the databases, the id2val table has thousands of rows -- each time a triple is entered it appears that a new entry is added for the predicate even if that predicate already exists
In some of the databases, the number of rows in the id2val table is, say, 100 -- each time a triple is added it re-uses the predicate if it exists.
For the former, I'm not able to query on the predicate because the temp table query is asking for a specific predicate ID, even though there might be hundreds of IDs for a given predicate
For the latter, it works a-okay because there's only one ID per predicate.
I suppose at this stage we can work around this (we only have one client hoping to take advantage of the work we're doing that needs to query on predicates), and I think their DB is the latter. Though, I'm curious if anyone has thoughts on why the former databases had that runaway predicate creation? Curious your thoughts?
from arc2.
I observed similar behavior when i worked on version 2.4
but can't help you with an explanation.
Maybe the following can help here:
- export all triples,
- setup the database again using our latest database schema (preferably InnoDb instead of MyISAM) and
- import all triples again.
That might not fix possible buggy behavior, but at least the DB schema is stable and ruled out as the source of the problem.
from arc2.
@k00ni I was thinking the same thing!
I'm more and more thinking that this issue is related to my other, #135 , because the false positive when asking if the val_hash exists would be impactful on id2val, if id2val was relying on val_hash to see if existing predicates existed.
Is there an easy way ti export all triples and import (ie, a built-in way) that you know of? Otherwise, I suppose I'll write a little tool to do it.
Thanks!
from arc2.
Alrighty, this is definitely related to #135 .. I found what I think is another error that was keeping existing predicates from being pulled from id2val.
I'll get both those changes set up in the update fork you created so it can be vetted.
(I still need to figure out a mini tool to export / import the triples, but, I think this should probably be easy enough.)
from arc2.
Related Issues (20)
- Add cache HOT 1
- Bug: ARC2 creates the same triple multiple times in the DB
- COUNT doesn't work with local endpoint HOT 4
- Multiple LOAD statements - some data not returned in subsequent SELECT queries
- Port repeating himself on localhost (with custom port) HOT 2
- Fix failing tests HOT 4
- Need SSL config advice for SPARQL endpoint
- Fatal error: Class 'ARC2\Store\Adapter\AbstractAdapter' not found HOT 4
- Problem with function fetchRow() ARC2_Store.php on line 761 HOT 4
- Update wiki and README to reflect new way of setting up ARC2
- Fatal error: Class 'ARC2\Store\Adapter\AbstractAdapter' not found in /Applications/MAMP/htdocs/1semantic/vendor/semsol/arc2/src/ARC2/Store/Adapter/mysqliAdapter.php on line 17 HOT 5
- fetchRow() returns false, not null, resulting in false positive for hasHashColumn() HOT 2
- Turtle parser can not parse decimals
- FILTER subject in an array of values HOT 1
- Problem finding AbstractAdapter in mysqliAdapter HOT 3
- Direct RDF import into database HOT 5
- preg_match error in PHP 7.4 HOT 1
- Problem querying PhySH subject headings using SPARQL: not all rows are returned
- SPARQL + Endpoint HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from arc2.