Marcel Otto
3480c254c3
Add missing escaping of language-tagged literals in Turtle encoder
2021-05-09 11:58:36 +02:00
Marcel Otto
967f81ad5a
Don't Turtle-encode IRIs as prefixed names when they will be non-conform
2021-05-09 03:06:20 +02:00
Marcel Otto
589d2939b5
Fix bug in Inspect protocol implementation of RDF.Diff
2021-03-15 20:06:02 +01:00
Marcel Otto
84b71d2b50
Fix failing CI on Elixir 1.9
2021-03-06 02:38:20 +01:00
Marcel Otto
e1680ffa95
Improve performance of the Enumerable impls of the RDF data structures
2021-03-05 23:23:06 +01:00
Marcel Otto
bb29582695
Add Enumerable.slice/1 implementations on PropertyMap and PrefixMap
2021-03-05 23:11:28 +01:00
Marcel Otto
f9bd3b9476
Handle base URIs without trailing slash or hash in Turtle encoder properly
2021-03-04 15:07:28 +01:00
Marcel Otto
b86392763e
Improvements of the Inspect form of the RDF data structures
2021-02-28 13:29:10 +01:00
Marcel Otto
32a59916f6
Add :indent option on RDF.Turtle.Encoder
2021-02-28 13:02:05 +01:00
Marcel Otto
f9a39288aa
Use Enum.map_join/2
2021-02-27 22:25:44 +01:00
Marcel Otto
e04b960557
Fix recognition of float and double literals of the form ".0" and "0."
2021-02-26 16:26:22 +01:00
Marcel Otto
386e2c1e29
Fix typo
2021-01-13 16:55:24 +01:00
Marcel Otto
ed403d9175
Allow initialization of dates and times with timezones from tuples
2020-12-20 02:55:24 +01:00
Marcel Otto
ec04345da2
Add RDF.Utils.lazy_map_update/3
2020-12-08 22:40:46 +01:00
pukkamustard
e143a960e0
Add XSD.Base64Binary
2020-12-06 18:07:57 +01:00
Marcel Otto
d07db98436
Add :as_value opt for XSD.Datatype.new/2 implementations
...
This is for datatypes where both the value space and the lexical space
consists of strings, which makes it impossible to differentiate if the
given value should be interpreted as one from the lexical space or the
value space.
2020-12-06 14:27:55 +01:00
Marcel Otto
889f2e5db1
Add top-level alias functions for read_stream and write_stream
2020-11-16 13:23:43 +01:00
Marcel Otto
76bf042ae5
Fix docs
2020-11-16 13:22:07 +01:00
Marcel Otto
96f3e46638
Handle conflicts of RDF.Vocabulary.Namespace terms with Kernel functions
2020-11-13 22:51:41 +01:00
Marcel Otto
ebb1aeb25e
Change inspect form of RDF.Diffs
2020-11-12 22:22:04 +01:00
Marcel Otto
e53b951519
Add API documentation for serialization encoders and decoders
2020-11-12 16:34:21 +01:00
Marcel Otto
bafaf6332e
Add RDF.IRI.in_namespace?/2 examples
2020-11-12 15:06:01 +01:00
Marcel Otto
b65d4b6bb7
Fix misleading function name
2020-11-11 11:17:13 +01:00
Marcel Otto
2b0296fd32
Fix formatting
2020-11-11 11:16:38 +01:00
Marcel Otto
42d5dfc5a6
Add RDF.IRI.in_namespace?/2
2020-11-10 10:56:38 +01:00
Marcel Otto
3806269d3e
Add read_stream!/2 functions
2020-11-06 13:03:01 +01:00
Marcel Otto
8b8c3feef7
Allow setting the stream mode via the new :stream opt on file writers
2020-11-05 22:06:10 +01:00
Marcel Otto
41a299e122
Add :gzip opt on all read and write file serialization functions
2020-11-05 21:09:36 +01:00
Marcel Otto
d3f66bd5d9
Support for streaming on file read and write serialization functions
2020-11-05 15:41:06 +01:00
Marcel Otto
a361a018a0
Add RDF.NQuads.Encoder.stream/2
2020-11-04 21:21:08 +01:00
Marcel Otto
426b6d832c
Add RDF.NTriples.Encoder.stream/2
2020-11-04 20:43:19 +01:00
Marcel Otto
25b7239843
Add RDF.NQuads.Decoder.decode_from_stream/2
2020-11-04 16:51:24 +01:00
Marcel Otto
b4f0ae074c
Add RDF.NTriples.Decoder.decode_from_stream/2
2020-11-04 16:32:17 +01:00
Marcel Otto
6ad8d0da72
Extend serialization API with functions for reading from streams
2020-11-04 12:18:04 +01:00
Marcel Otto
ff40022f6d
Extend serialization API with functions for writing to streams
2020-11-04 11:37:52 +01:00
Marcel Otto
3d28ec9085
Clean up serialization API, code and documentation
2020-11-04 09:56:22 +01:00
Marcel Otto
0dc8e383ce
Add RDF.Data.t type for the RDF data structures
2020-11-03 11:53:03 +01:00
Marcel Otto
1cf84a0e84
Remove unused RDF.Serialization.Format.options/0 callback
2020-11-03 11:15:45 +01:00
Marcel Otto
e3454f73ce
Fix dialyzer warning
2020-11-02 15:59:14 +01:00
Marcel Otto
8d98461e0b
Change Inspect form for RDF data structures to be Turtle-based
2020-11-02 15:17:18 +01:00
Marcel Otto
929e2a8c81
Use RDF.PrefixMap.prefixed_name/2 in Turtle encoder
2020-11-02 02:05:23 +01:00
Marcel Otto
27a4c177e2
Change RDF.BlankNode.new/0 to create integer-based blank nodes
2020-11-01 13:48:17 +01:00
Marcel Otto
8e74e9a9d2
Fix some of the BlankNode representations to be Turtle-serializable
2020-11-01 04:14:30 +01:00
Marcel Otto
3041204ff7
Add RDF.BlankNode.value/1
2020-11-01 02:26:18 +01:00
Marcel Otto
c17cf8297c
Improve performance of RDF.PrefixMap.prefixed_name_to_iri/2
2020-10-30 11:42:07 +01:00
Marcel Otto
15002a0bbb
Add RDF.Dataset.prefixes/1
2020-10-28 11:51:00 +01:00
Marcel Otto
29a860d969
Allow vocabulary namespace modules as base for Turtle encoder
2020-10-28 11:36:43 +01:00
Marcel Otto
4f095b8d47
Add RDF.PrefixMap.put/3
2020-10-21 12:59:20 +02:00
Marcel Otto
217139deae
Shorten the Inspect form of RDF.PrefixMap
2020-10-15 09:05:43 +02:00
Marcel Otto
f4c15d6930
Add missing typespec
2020-10-13 15:54:43 +02:00
Marcel Otto
692aeed834
Update API documentation
2020-10-13 15:28:40 +02:00
Marcel Otto
352b8ef1a8
Use also the :context opt and implicit PropertyMap formats in values/2
2020-10-13 11:50:02 +02:00
Marcel Otto
cafba9f61f
Add support for RDF.PropertyMaps in BGP and path queries
2020-10-13 10:43:05 +02:00
Marcel Otto
d3c6336782
Fix bug with BGP queries provided as maps
2020-10-12 23:02:56 +02:00
Marcel Otto
9ecc59b542
Change naming of statement count functions to be consistent
...
Previous names are provided as delegation functions.
2020-10-11 13:11:18 +02:00
Marcel Otto
eef64b9253
Add support for adding terms of a vocab namespace to RDF.PropertyMap
...
For now only with RDF.PropertyMap.add/2 on purpose, since we want to
enforce a conscious usage of this feature, as put/2 would silently
overwrite terms.
2020-10-11 11:42:30 +02:00
Marcel Otto
875908eb39
Handle conflicting terms for the same IRI in a PropertyMap
2020-10-11 02:35:58 +02:00
Marcel Otto
95a69d9007
Add Enumerable protocol implementation for RDF.PropertyMap
2020-10-11 01:07:53 +02:00
Marcel Otto
c1495a5f39
Add Inspect protocol implementation for RDF.PropertyMap
2020-10-11 00:57:29 +02:00
Marcel Otto
3e111ff22b
Add some aliases to RDF.Data
2020-10-10 22:23:01 +02:00
Marcel Otto
e99ff455ae
Add opts for contexts on RDF.Data functions
2020-10-10 22:09:29 +02:00
Marcel Otto
a49229384e
Extract map/2 function from values/2 on all RDF data structures
...
and add support for RDF.PropertyMaps on values/2 instead
2020-10-10 15:45:25 +02:00
Marcel Otto
1befb382da
Fix dialyzer fail
2020-10-09 22:20:52 +02:00
Marcel Otto
1adfb697b1
Add missing PropertyMap alias
2020-10-09 21:37:28 +02:00
Marcel Otto
d0e5b625fd
Support for RDF.PropertyMaps as :context opt on functions with input data
2020-10-09 16:32:24 +02:00
Marcel Otto
e681733652
Add RDF.PropertyMap
2020-10-08 22:49:45 +02:00
Marcel Otto
ec0e60e3c8
Add RDF.IRI.append/2
2020-10-08 11:45:34 +02:00
Marcel Otto
71292b721c
Add :init option to RDF.Graph.new/2 and RDF.Dataset.new/2
2020-10-07 16:08:22 +02:00
Marcel Otto
8325ba9988
Allow the base_iri of RDF.Vocabulary.Namespaces to end with a dot
2020-10-07 16:02:03 +02:00
Marcel Otto
51e6712d69
Stylistic cleanup of RDF data structures
2020-10-05 14:32:18 +02:00
Marcel Otto
9880fd7be3
Handle structs in the input of RDF data structure functions properly
2020-10-05 12:41:55 +02:00
Marcel Otto
d815200b4a
Optimize handling of descriptions in RDF.Description.include?/2
2020-10-05 11:13:28 +02:00
Marcel Otto
08a97ff2dc
Add support for quads in input data of RDF.Description functions
2020-10-05 01:28:24 +02:00
Marcel Otto
1a7ffe58c4
Change behaviour of put and add put_properties on RDF.Graph and Dataset
2020-10-04 16:31:41 +02:00
Marcel Otto
4408a04103
Adapt RDF.Dataset.put/3 to new forms of input
2020-10-04 13:25:24 +02:00
Marcel Otto
42f787836f
Improve implementation of RDF.Graph.put/3
...
- fixes bugs with some combinations of possible inputs
- simplify implementation
- add opts
2020-10-04 03:07:27 +02:00
Marcel Otto
9b1600c863
Fix bug in RDF.Graph.put/2 with quad input
2020-10-01 15:53:44 +02:00
Marcel Otto
7fda16a40e
Change format for BGP queries to be inline with the common input formats
2020-10-01 15:50:52 +02:00
Marcel Otto
aed8e5bae6
Copy Enum while_ok utils from SPARQL.Client
2020-09-30 14:41:19 +02:00
Marcel Otto
96bb678ffc
Fix RDF.Graph.put/2 to ignore empty RDF.Descriptions
2020-09-30 10:47:02 +02:00
Marcel Otto
f83ac494fc
Rename RDF.Graph.delete_subjects/2 to RDF.Graph.delete_descriptions/2
2020-09-30 10:20:13 +02:00
Marcel Otto
6315b85edf
Add RDF.Dataset.name/1 and RDF.Dataset.change_name/2
2020-09-28 20:48:10 +02:00
Marcel Otto
8b723286c5
Limit and unify the forms of input on RDF.Dataset functions
2020-09-28 17:39:31 +02:00
Marcel Otto
2a44765631
Add support for list of descriptions to RDF.Graph.put/2
2020-09-28 12:36:25 +02:00
Marcel Otto
69fbdd60b3
Add RDF.Graph.base_iri/1 and RDF.Graph.prefixes/1
2020-09-28 11:22:46 +02:00
Marcel Otto
c306700991
Add RDF.Graph.name/1 and RDF.Graph.change_name/2
2020-09-28 11:09:35 +02:00
Marcel Otto
a8c71df20b
Limit and unify the forms of input on RDF.Graph functions
2020-09-28 02:49:41 +02:00
Marcel Otto
20a69964c7
Change RDF.Description.new/2 to take initial data via the :init option
2020-09-25 16:07:37 +02:00
Marcel Otto
bcf024647e
Merge branch 'master' into rdf-star
2020-09-24 12:05:41 +02:00
Marcel Otto
a4b71b3f9d
Add prefixed_name/2 and prefixed_name_to_iri/2 to RDF.PrefixMap
2020-09-16 00:38:56 +02:00
Marcel Otto
081a78c692
Use prefixes of the graphs of a RDF.Dataset when serializing to Turtle
2020-09-14 16:41:41 +02:00
Marcel Otto
6e9889c1bd
Add atoms for most common conflict resolvers on RDF.PrefixMap.merge/3
2020-09-14 15:50:32 +02:00
Marcel Otto
092db587b6
Add :only option to Turtle encoder for partial documents
2020-09-14 01:09:46 +02:00
Marcel Otto
d9ab8b5804
Add :directive_style option to Turtle encoder
2020-09-13 22:16:12 +02:00
Marcel Otto
58c5772011
Add RDF.Description.subject/1 and RDF.Description.change_subject/2
2020-07-28 14:45:12 +02:00
Marcel Otto
e9432ef556
Limit the forms of input on RDF.Description functions
2020-07-27 23:09:23 +02:00
Marcel Otto
3f6393a191
Improve RDF.Description.pop/1
2020-07-26 23:01:43 +02:00
Marcel Otto
909e2bde18
Rename the :id field of RDF.BlankNode to :value for consistency reasons
2020-07-08 22:02:58 +02:00
pukkamustard
2d68a352ed
Fix non-empty RDF.Graph when adding empty RDF.Description ( #8 )
2020-07-03 23:49:06 +02:00
Marcel Otto
0e81f4c02c
Apply mix formatter
2020-06-29 10:37:42 +02:00
Marcel Otto
c880026224
Remove references to current module names by using __MODULE__
2020-06-28 23:40:03 +02:00
Marcel Otto
520a6ba58d
Add API documentation for BGP querying and some fixes for the API
2020-06-16 12:05:44 +02:00
Marcel Otto
7d3473abd0
RDF graph query API
2020-06-13 16:16:52 +02:00
Marcel Otto
8d68e925ad
Add path query builder
2020-06-12 02:53:29 +02:00
Marcel Otto
b6aafccc7d
Move query builder into own module
2020-06-12 00:19:31 +02:00
Marcel Otto
1aa2f22b92
Add RDF.Query.BGP builder
2020-06-10 01:13:01 +02:00
Marcel Otto
f9e451f006
Change BGP matching query results to return variable keys as atoms
2020-06-08 21:56:50 +02:00
Marcel Otto
9cd4478574
Add RDF.Query.BGP struct
2020-06-08 11:36:22 +02:00
Marcel Otto
2fca23209b
Rename BGP matcher algorithm behaviour
2020-06-08 10:16:22 +02:00
Marcel Otto
1ca082cbb2
Add and improve existing typespecs on BGP behaviour
2020-06-08 10:08:09 +02:00
Marcel Otto
49bcb27bb0
Add streaming version of the BGP matching algorithm
2020-06-08 00:58:39 +02:00
Marcel Otto
cbc525d982
Move BGP query planner and bnode handler to dedicated files
2020-06-07 23:30:34 +02:00
Marcel Otto
335d4cc66d
Make simple BGP more comprehensible
2020-06-07 22:50:24 +02:00
Marcel Otto
ed1b9c80a1
Extract BGP bnode handling
2020-06-06 02:46:03 +02:00
Marcel Otto
f4bda2ef00
Only traverse the solution set to remove blank nodes when necessary
...
Also add an option remove_bnode_query_variables to skip the removal
generally.
2020-06-05 12:33:04 +02:00
Marcel Otto
ef218a3a90
Extract BGP query planner
2020-06-05 11:10:15 +02:00
Marcel Otto
1de3a7fa6f
Add BGP matching algorithm behaviour with a simple implementation
...
This simple implementation was just extracted unchanged from SPARQL.ex
2020-06-04 21:39:13 +02:00
Marcel Otto
fab63e6a0d
Update API documentation
2020-06-01 15:43:38 +02:00
Marcel Otto
8106f89ca0
Optimize canonical_lexical/1 implementation on RDF.XSD.Datatypes
2020-05-29 01:33:40 +02:00
Marcel Otto
df9a928802
Fix dialyzer warnings
2020-05-28 02:00:01 +02:00
Marcel Otto
3743b0e406
Add RDF.Literal.is_a?/2
2020-05-27 23:55:43 +02:00
Marcel Otto
98adbaf878
Handle derived datatypes on RDF.Literal.Datatype.compare/2 properly
2020-05-27 00:56:44 +02:00
Marcel Otto
162e82ed47
Handle derived datatypes on RDF.Literal.Datatype.equal_value?/2 properly
2020-05-25 23:10:50 +02:00
Marcel Otto
d247e1bf4f
Support derived datatypes on RDF.Literal.Datatype.value/1 and valid?/2
2020-05-24 21:13:04 +02:00
Marcel Otto
7daf494fb9
Restore ability to cast RDF.IRIs to XSD.Strings and XSD.AnyURIs
...
This is needed for SPARQL.
2020-05-23 00:31:15 +02:00
Marcel Otto
e755c1d0ff
Fix dialyzer warning
2020-05-22 01:07:28 +02:00
Marcel Otto
6c102c7ec8
Add explicitTimezone XSD datatype facet
2020-05-22 01:01:08 +02:00
Marcel Otto
486a64b4d7
Add totalDigits and fractionDigits XSD datatype facets
2020-05-21 22:57:03 +02:00
Marcel Otto
0a27c3a928
More strict type for length XSD datatype facets
...
as defined in the XSD spec
2020-05-21 22:24:44 +02:00
Marcel Otto
c2a28b3eb4
Add pattern XSD datatype facet
2020-05-21 17:54:38 +02:00
Marcel Otto
80b1382fa9
Add length facets to XSD.AnyURI
2020-05-21 17:50:53 +02:00
Marcel Otto
dbaac77dbb
Handle derived types in RDF.Literal.Datatype.cast/1 implementations
2020-05-21 15:42:02 +02:00
Marcel Otto
c1a61c58e8
Remove coercion on RDF.Literal.Datatype.cast/1
...
It's not worth the effort and more explicit to do the coercion step
manually.
2020-05-21 01:58:07 +02:00
Marcel Otto
accf66d75f
Fix failing of numeric operations with invalid literals
2020-05-20 00:32:20 +02:00
Marcel Otto
fa130bf14e
Fix type promotion on numeric operations with derived datatypes
2020-05-19 03:09:29 +02:00
Marcel Otto
22c2aaa1af
Add length, minLength and maxLength XSD datatype facets
2020-05-17 22:54:07 +02:00
Marcel Otto
2c4b5f604a
Add minExclusive and maxExclusive XSD datatype facets
2020-05-17 21:51:03 +02:00
Marcel Otto
09dceb0e35
Add proper handling for derived datatypes on numeric operations
...
with type promotion
2020-05-17 21:49:07 +02:00
Marcel Otto
bf932be26d
Add min- and max-inclusive facet implementations to decimal and double
2020-05-17 20:21:00 +02:00
Marcel Otto
5daf32446d
Fix regression in RDF.LangString.match_language?/2
2020-05-17 02:47:48 +02:00
Marcel Otto
47a19c0a67
Add proper handling of vocabulary terms at various places
...
- in the coerce and value functions of the RDF.Term protocol for atoms
- allow them as XSD.AnyURI values
- RDF.Literal.coerce produces XSD.AnyURI literals from them
- allow them in equal_value comparisons with RDF.IRIs and XSD.AnyURIs
2020-05-17 00:53:36 +02:00
Marcel Otto
76b6f69613
Fix raised BEAM error warning when namespace resolving top-level modules
2020-05-17 00:01:18 +02:00
Marcel Otto
4d3d60a5f4
Fix regression in handling of vocabulary terms as generic datatypes
2020-05-16 14:42:12 +02:00
Marcel Otto
6873ba4da1
Fix dialyzer warnings
2020-05-16 03:51:54 +02:00
Marcel Otto
0509e4cb2f
Store datatype in a RDF.Literal.Generic internally as string
...
Besides being a bit more memory efficient this allows for
pattern matching on the datatype of generic literals.
2020-05-16 00:06:45 +02:00
Marcel Otto
25a0f7443c
Rename RDF.Literal.datatype/1 and similar functions to datatype_id/1
2020-05-15 22:59:05 +02:00
Marcel Otto
fa35b65d9f
Redesign datatype reflection API
2020-05-15 17:13:31 +02:00
Marcel Otto
b53d09d4f5
Add RDF.Literal.Datatype.Registry.xsd_datatype/1
2020-05-10 01:37:01 +02:00
Marcel Otto
d18c7ed475
Refactor datatype registry
2020-05-10 01:35:07 +02:00
Marcel Otto
afc6f28cf4
Always resolve datatype IRIs through the registration protocol
...
It's actually faster (although just slightly) than the map access!
2020-05-09 00:54:35 +02:00