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
Multivalued Link
headers cannot be parsed by the Link::valueOf
method.
The link http://atomgraph.github.io/atomgraph-core/apidocs/ is not working
Create a version of XSLT g:query-string()
function that takes fragment identifier as a parameter
We could upgrade Jena to 3.8.0 because that is what SPINRDF is at:
spinrdf/spinrdf#17
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
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
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.
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(.))
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.
Separate the templates into 2 layers and split ResourceXSLTWriter
provider accordingly
Cannot use ResourceXSLTWriter
with LinkedDataResource
subclasses.
Probably need to refactor into MessageBodyWriter<Object>
.
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
Templates for labels needed as g:label()
function is too inflexible (templates are easier to override)
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.
Create a version of g:label()
that can handle @rdf:nodeID
or string
Create JUnit tests starting with core classes such as DataManager
.
Full test coverage is the ultimate goal.
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.
Update RDFPostReader
to support typed and multilingual literals (lt
and ll
)
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
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.
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
.
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.