atomgraph / core Goto Github PK
View Code? Open in Web Editor NEWGeneric Linked Data framework for SPARQL tripestore backends. Apache license.
Home Page: https://atomgraph.com
License: Apache License 2.0
Generic Linked Data framework for SPARQL tripestore backends. Apache license.
Home Page: https://atomgraph.com
License: Apache License 2.0
Instead of hand-crafted list, generate the Accept
header value according to the list of RDF readers/parsers the current Jena dependecy supports.
There will still be a need to qualify (prioritize) the media types.
We could upgrade Jena to 3.8.0 because that is what SPINRDF is at:
spinrdf/spinrdf#17
web.xml
should support a configuration property like gs:preemptiveAuth
which would trigger pre-emptive authentication in Jena (sending credentials without being challenged first).
http://jena.staging.apache.org/documentation/query/http-auth.html
Now the core contains a streaming Jena-compatible RDFPostReader
, but the writer implementation is missing. It would effectively make RDF/POST another Jena-supported RDF serialization, with media type application/rdf+x-www-form-urlencoded
and file extension .rpo
.
Templates for labels needed as g:label()
function is too inflexible (templates are easier to override)
Right now the EntityTag
is generated as a hash of the RDF response Model, which means all serializations, including XHTML, get the same value. This leads to caching issues (wrong response body returned on 304 Not Modified
. The solution is to add Variant
hash to the Model hash.
Origin
subclasses SPARQLEndpointOrigin
and GraphStoreOrigin
differ only in configuration properties (sd:endpoint
and g:graphStore
). If it would be possible to indicate the property in providers (something like @Context(SD.endpoint) Origin origin
), then the subclasses could be removed and Origin
reused both for SPARQL endpoints and Graph Stores.
It seems pom.xml is in the .gitignore file, and has not been checked in. This makes it difficult for others to build the source code.
SPARQL 1.1 Protocol specifies CSV/TSV output formats for SELECT
results:
https://www.w3.org/TR/2013/REC-sparql11-results-csv-tsv-20130321/
However, ResultSetProvider
currently only supports XML and JSON:
https://github.com/AtomGraph/Core/blob/master/src/main/java/com/atomgraph/core/io/ResultSetProvider.java#L72
Right now the RDF/POST parser is implemented in the Client as MessageBodyReader<Model>
and reads String
. Instead, make it streaming (read InputStream
) and plug it into Jena as described in Reading RDF in Apache Jena: Add a new language.
SPARQL endpoint Context should be set per request (in Resource constructor) instead of Application initialization as it is now.
configureServiceContext()
can be reused:
https://github.com/Graphity/graphity-ldp/blob/master/src/main/java/org/graphity/server/ApplicationBase.java#L126
Right now the RDF and SPARQL access over HTTP is handled by DataManager
which extends Jena's FileManager
. A nicer design would be to use Jersey's Client API with @Provider
s, as the Graphity Client currently does: https://jersey.java.net/documentation/1.18/client-api.html
Create a generic function returning URIs for all types of nodes: attributes (subjects/objects) and elements (predicates).
Mostly to avoid code like this: concat(namespace-uri(.), local-name(.))
Separate the templates into 2 layers and split ResourceXSLTWriter
provider accordingly
Create a version of g:label()
that can handle @rdf:nodeID
or string
Cannot use ResourceXSLTWriter
with LinkedDataResource
subclasses.
Probably need to refactor into MessageBodyWriter<Object>
.
Create JUnit tests starting with core classes such as DataManager
.
Full test coverage is the ultimate goal.
The link http://atomgraph.github.io/atomgraph-core/apidocs/ is not working
Multivalued Link
headers cannot be parsed by the Link::valueOf
method.
Update RDFPostReader
to support typed and multilingual literals (lt
and ll
)
Create a version of XSLT g:query-string()
function that takes fragment identifier as a parameter
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.