Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vityok/cl-ntriples
A simple parser for the N-Triples data format as defined by the W3C for storing RDF/Semantic information. N-Triples is a line-based, plain text format for encoding an RDF graph.
https://github.com/vityok/cl-ntriples
n-triples ntriples rdf-triples semantic-web
Last synced: about 1 month ago
JSON representation
A simple parser for the N-Triples data format as defined by the W3C for storing RDF/Semantic information. N-Triples is a line-based, plain text format for encoding an RDF graph.
- Host: GitHub
- URL: https://github.com/vityok/cl-ntriples
- Owner: vityok
- Created: 2019-12-22T21:19:17.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2019-12-22T21:19:33.000Z (about 5 years ago)
- Last Synced: 2024-11-06T07:37:22.501Z (3 months ago)
- Topics: n-triples, ntriples, rdf-triples, semantic-web
- Language: Common Lisp
- Homepage:
- Size: 8.79 KB
- Stars: 5
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
**CL-NTRIPLES** provides a simple parser for the N-Triples data format as defined by the W3C for storing RDF/Semantic information. N-Triples is a line-based, plain text format for encoding an RDF graph.
Main entry function is `PARSE-NT` method that parses N-Triples from the given source. This method accepts a file pathname, an input stream, or a string.
Returns a list of triples consisting of three elements: subject, predicate, object. Subjects can be either an `uriref` or a `nodeID`. Objects can be of three types: `uriref`, `nodeID` or a `literal`. Depending on the type of the object it is encoded into an association list.
N-Triples data format standard definition is provided in the W3C documents:
* [RDF Testcases, N-Triples](http://www.w3.org/TR/rdf-testcases/#ntriples)
Check also the [Semantic Web page](http://www.cliki.net/Semantic%20Web) on CLiki.
[Project page on Sourceforge.](http://sourceforge.net/projects/cl-ntriples/)
Sample usage
============CL-NTRIPLES [![Quickdocs](http://quickdocs.org/badge/cl-ntriples.svg)](http://quickdocs.org/cl-ntriples/) is available through Quicklisp:
```
(ql:quickload :cl-ntriples)
```CL-NTRIPLES was developed for a practical purpose of accessing the wealth of data accumulated by the DBPedia project. For example, let's query information about a Ukrainian city of Chernihiv (wiki, dbpedia):
~~~~
(defvar page-url "http://dbpedia.org/data/Chernihiv.ntriples")
(defvar *res* (nt:parse-nt (drakma:http-request page-url)))
;; *res* now contains a list of triples, let's query some predicates
;; for brevity, predicates will defined as variables(defconstant +prop-area-total-km+ "http://dbpedia.org/property/areaTotalKm")
(defconstant +rdf-label+ "http://www.w3.org/2000/01/rdf-schema#label");; querying predicates is now reduced to a simple function call:
;; nt:predicate? TRIPLES PREDICATE &key LANG DATA-TYPE;; what is the city area in km2?
(nt:predicate? *res* +prop-area-total-km+)
=> (("http://dbpedia.org/resource/Chernihiv"
"http://dbpedia.org/property/areaTotalKm"
((:LITERAL-STRING . "79")
(:URIREF . "http://www.w3.org/2001/XMLSchema#int"))));; how do Japanese call this city?
(predicate? *res* +rdf-label+ :lang "ja")
=> (("http://dbpedia.org/resource/Chernihiv"
"http://www.w3.org/2000/01/rdf-schema#label"
(:LITERAL-STRING "チェルニーヒウ" :LANG "ja")))
~~~~Functions
=========Package provides following functions:
* `PARSE-NT src`
Parses and returns a list of triples* `PREDICATE? triples predicate &key lang data-type`
filters out triples with matching predicates. Additional parameters (lang and data-type) can be used to limit returned triples to those with matching language and data type specifiers.* `LITERAL-STRING triple`
returns the literal-string value of the given triple.