iolanta 2.1.1__py3-none-any.whl → 2.1.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. iolanta/cli/main.py +83 -43
  2. iolanta/declension/__init__.py +0 -0
  3. iolanta/declension/data/declension.yamlld +39 -0
  4. iolanta/declension/facet.py +44 -0
  5. iolanta/declension/sparql/declension.sparql +8 -0
  6. iolanta/facets/cli/record.py +2 -2
  7. iolanta/facets/facet.py +1 -22
  8. iolanta/facets/foaf_person_title/facet.py +2 -2
  9. iolanta/facets/generic/bool_literal.py +3 -3
  10. iolanta/facets/generic/date_literal.py +1 -1
  11. iolanta/facets/generic/default.py +2 -2
  12. iolanta/facets/html/code_literal.py +3 -3
  13. iolanta/facets/icon.py +1 -1
  14. iolanta/facets/locator/sparql/get-query-to-facet.sparql +5 -0
  15. iolanta/facets/locator.py +5 -11
  16. iolanta/facets/qname.py +2 -2
  17. iolanta/facets/textual_browser/app.py +7 -3
  18. iolanta/facets/textual_browser/facet.py +1 -1
  19. iolanta/facets/textual_browser/page_switcher.py +13 -18
  20. iolanta/facets/textual_class/facets.py +3 -3
  21. iolanta/facets/textual_class/sparql/instances.sparql +4 -1
  22. iolanta/facets/textual_default/facets.py +5 -5
  23. iolanta/facets/textual_default/widgets.py +1 -1
  24. iolanta/facets/textual_graph/facets.py +3 -3
  25. iolanta/facets/textual_graph_triples.py +1 -1
  26. iolanta/facets/textual_graphs/__init__.py +6 -0
  27. iolanta/facets/textual_graphs/data/textual_graphs.yamlld +23 -0
  28. iolanta/facets/textual_graphs/facets.py +138 -0
  29. iolanta/facets/textual_graphs/sparql/graphs.sparql +5 -0
  30. iolanta/facets/textual_link/facet.py +4 -4
  31. iolanta/facets/textual_nanopublication/facet.py +1 -1
  32. iolanta/facets/textual_no_facet_found.py +3 -1
  33. iolanta/facets/textual_ontology/facets.py +3 -3
  34. iolanta/facets/textual_provenance/facets.py +1 -1
  35. iolanta/facets/title/facets.py +1 -4
  36. iolanta/facets/wikibase_statement_title/facets.py +2 -2
  37. iolanta/iolanta.py +2 -2
  38. iolanta/labeled_triple_set/__init__.py +0 -0
  39. iolanta/labeled_triple_set/data/labeled_triple_set.yamlld +42 -0
  40. iolanta/labeled_triple_set/labeled_triple_set.py +137 -0
  41. iolanta/labeled_triple_set/sparql/triples.sparql +5 -0
  42. iolanta/mcp/__init__.py +0 -0
  43. iolanta/mcp/cli.py +39 -0
  44. iolanta/mcp/prompts/nanopublication_assertion_authoring_rules.md +63 -0
  45. iolanta/mcp/prompts/rules.md +83 -0
  46. iolanta/mermaid/facet.py +0 -3
  47. iolanta/mermaid/mermaid.yamlld +7 -24
  48. iolanta/mermaid/models.py +38 -9
  49. iolanta/mermaid/sparql/ask-has-triples.sparql +3 -0
  50. iolanta/sparqlspace/processor.py +6 -3
  51. {iolanta-2.1.1.dist-info → iolanta-2.1.6.dist-info}/METADATA +7 -7
  52. {iolanta-2.1.1.dist-info → iolanta-2.1.6.dist-info}/RECORD +54 -36
  53. {iolanta-2.1.1.dist-info → iolanta-2.1.6.dist-info}/WHEEL +1 -1
  54. {iolanta-2.1.1.dist-info → iolanta-2.1.6.dist-info}/entry_points.txt +4 -0
@@ -0,0 +1,63 @@
1
+ # How to author Nanopublication Assertions with Iolanta
2
+
3
+ ## What are Nanopublications?
4
+
5
+ Nanopublications are a special type of Linked Data that contain structured knowledge statements with three main components:
6
+
7
+ 1. **Assertion** - The core knowledge claim or statement
8
+ 2. **Provenance** - Information about how the assertion was derived (sources, methods, contributors)
9
+ 3. **Publication Info** - Metadata about the nanopublication itself (author, creation date, etc.)
10
+
11
+ Nanopublications are cryptographically signed and published in the decentralized **Nanopublication Registry**, making them:
12
+ - Irrevocably attributed to the author
13
+ - Protected from tampering
14
+ - Referenceable by unique IDs
15
+ - Machine readable and reusable
16
+ - Decentralized and persistent
17
+
18
+ ## Assertion-Only Workflow
19
+
20
+ **NP00.** Nanopublication assertion graphs must also satisfy the general rules for Linked Data authoring and workflow. That is provided in the MCP prompt named `ld_authoring_rules`.
21
+
22
+ **NP01.** We focus only on writing the **assertion graph** of the nanopublication.
23
+
24
+ **NP02.** Follow the standard YAML-LD authoring rules (R00-R23) for creating the assertion.
25
+
26
+ **NP03.** The assertion should express a single, clear knowledge claim that can stand alone.
27
+
28
+ **NP04.** Use proper Linked Data vocabularies and resolvable URIs for all entities and relationships.
29
+
30
+ **NP05.** After the assertion graph is ready, follow this workflow:
31
+
32
+ ```bash
33
+ # Expand the YAML-LD to JSON-LD
34
+ pyld expand assertion.yamlld > expanded.jsonld
35
+
36
+ # Create nanopublication from the assertion
37
+ np create from-assertion expanded.jsonld > nanopublication.trig
38
+
39
+ # Publish the nanopublication (when ready)
40
+ np publish nanopublication.trig
41
+ ```
42
+
43
+ **NP06.** The `pyld expand` command converts YAML-LD to expanded JSON-LD format.
44
+
45
+ **NP07.** The `np create from-assertion` command automatically generates the provenance and publication info components.
46
+
47
+ **NP08.** The `np publish` command cryptographically signs and publishes the nanopublication to the registry.
48
+
49
+ **NP09.** Use the Iolanta MCP `render_uri` tool to validate the assertion before proceeding with the workflow.
50
+
51
+ **NP10.** Save Mermaid visualizations of the assertion for documentation purposes.
52
+
53
+ ## Best Practices for Assertions
54
+
55
+ **NP11.** Keep assertions focused on a single, verifiable claim.
56
+
57
+ **NP12.** Use canonical URIs from established knowledge bases (DBpedia, Wikidata, etc.).
58
+
59
+ **NP13.** Include sufficient context and metadata to make the assertion meaningful.
60
+
61
+ **NP14.** Ensure the assertion can be understood independently of external context.
62
+
63
+ **NP15.** Use standard vocabularies and well-established ontologies for relationships.
@@ -0,0 +1,83 @@
1
+ # How to author Linked Data with Iolanta
2
+
3
+ **R00.** Follow this YAML-LD authoring workflow:
4
+ - Draft YAML-LD from user text
5
+ - Use the Iolanta MCP `render_uri` tool with `as_format: labeled-triple-set` to validate and get feedback
6
+ - Address the feedback, correct the YAML-LD document appropriately
7
+ - **After each change to the YAML-LD file, re-run the validation to check for new feedback**
8
+
9
+ **R01.** Acceptance Criteria:
10
+
11
+ - The document fits the original statement the user wanted to express;
12
+ - No negative feedback is received.
13
+
14
+ **R02.** Use YAML-LD format, which is JSON-LD in YAML syntax, for writing Linked Data.
15
+
16
+ **R03.** Always quote the @ character in YAML since it's reserved. Use `"@id":` instead of `@id:`.
17
+
18
+ **R04.** Prefer YAML-LD Convenience Context which maps @-keywords to $-keywords that don't need quoting: `"@type"` → `$type`, `"@id"` → `$id`, `"@graph"` → `$graph`.
19
+
20
+ **R05.** Use the dollar-convenience context with `@import` syntax instead of array syntax. This provides cleaner, more readable YAML-LD documents.
21
+
22
+ Example:
23
+ ```yaml
24
+ "@context":
25
+ "@import": "https://json-ld.org/contexts/dollar-convenience.jsonld"
26
+
27
+ schema: "https://schema.org/"
28
+ wd: "https://www.wikidata.org/entity/"
29
+
30
+ author:
31
+ "@id": "https://schema.org/author"
32
+ "@type": "@id"
33
+ ```
34
+
35
+ Instead of:
36
+ ```yaml
37
+ "@context":
38
+ - "https://json-ld.org/contexts/dollar-convenience.jsonld"
39
+ - schema: "https://schema.org/"
40
+ - wd: "https://www.wikidata.org/entity/"
41
+ - author:
42
+ "@id": "https://schema.org/author"
43
+ "@type": "@id"
44
+ ```
45
+
46
+ **R06.** Reduce quoting when not required by YAML syntax rules.
47
+
48
+ **R07.** Do not use mock URLs like `https://example.org`. Use resolvable URLs that preferably point to Linked Data.
49
+
50
+ **R08.** Use URIs that convey meaning and are renderable with Linked Data visualization tools. Search for appropriate URIs from sources like DBPedia or Wikidata.
51
+
52
+ **R09.** Use the Iolanta MCP `render_uri` tool with `as_format: mermaid` to generate Mermaid graph visualizations of Linked Data. If the user asks, you can save them to `.mmd` files for preview and documentation purposes.
53
+
54
+ **R10.** For language tags, use YAML-LD syntax: `rdfs:label: { $value: "text", $language: "lang" }` instead of Turtle syntax `"text"@lang`.
55
+
56
+ **R11.** Do not attach labels to external URIs that are expected to return Linked Data. Iolanta will fetch those URIs and render labels from the fetched data.
57
+
58
+ **R12.** Use `"@type": "@id"` in the context to coerce properties to IRIs instead of using `$id` wrappers in the document body.
59
+
60
+ **R13.** For software packages, use `schema:SoftwareApplication` as the main type rather than `codemeta:SoftwareSourceCode`.
61
+
62
+ **R14.** Use Wikidata entities for programming languages (e.g., `https://www.wikidata.org/entity/Q28865` for Python) instead of string literals.
63
+
64
+ **R15.** Use proper ORCID URIs for authors (e.g., `https://orcid.org/0009-0001-8740-4213`) and coerce them to IRIs in the context.
65
+
66
+ **R16.** For tools that provide both library and CLI functionality, classify as `schema:Tool` with `schema:applicationSubCategory: Command-line tool`.
67
+
68
+ **R17.** Use real, resolvable repository URLs (e.g., `https://github.com/iolanta-tech/python-yaml-ld`) instead of placeholder URLs.
69
+
70
+ **R18.** Include comprehensive metadata: name, description, author, license, programming language, version, repository links, and application category.
71
+
72
+ **R19.** Use standard vocabularies: schema.org, RDFS, RDF, DCTerms, FOAF, and CodeMeta when appropriate.
73
+
74
+ **R20.** Validate Linked Data using the Iolanta MCP `render_uri` tool with `as_format: labeled-triple-set` to check for URL-as-literal issues and proper IRI handling.
75
+
76
+ **R21.** Do not add `rdfs:label` to external URIs that are expected to return Linked Data. If a URI does not exist or cannot be resolved, do not mask this fact by adding labels. Instead, use a different, existing URI or document the issue with a comment.
77
+
78
+ **R22.** Define URI coercion in the context using `"@type": "@id"` rather than using `$id` wrappers in the document body. This keeps the document body clean and readable while ensuring proper URI handling.
79
+
80
+ **R23.** When defining local shortcuts for URIs in the context, use dashed-case (e.g., `appears-in`, `named-after`) instead of camelCase (e.g., `appearsIn`, `namedAfter`). This improves readability and follows common YAML conventions.
81
+
82
+ **R24.** Do not rely upon `owl:sameAs` or `schema:sameAs` to express identity relationships. This necessitates OWL inference at the side of the reader, which is performance-taxing and tends to create conflicts. Instead, use direct URIs for entities without relying on sameAs statements for identity.
83
+
iolanta/mermaid/facet.py CHANGED
@@ -122,6 +122,3 @@ class Mermaid(Facet[str]):
122
122
  direct_children = self.construct_mermaid_for_graph(self.this)
123
123
  subgraphs = self.construct_mermaid_subgraphs()
124
124
  return str(Diagram(children=[*direct_children, *subgraphs]))
125
-
126
-
127
-
@@ -1,42 +1,25 @@
1
1
  "@context":
2
2
  "@import": https://json-ld.org/contexts/dollar-convenience.jsonld
3
- vann: https://purl.org/vocab/vann/
4
- foaf: https://xmlns.com/foaf/0.1/
5
- owl: https://www.w3.org/2002/07/owl#
6
3
  iolanta: https://iolanta.tech/
7
- rdfs: "https://www.w3.org/2000/01/rdf-schema#"
8
- rdf: https://www.w3.org/1999/02/22-rdf-syntax-ns#
9
- dcterms: https://purl.org/dc/terms/
10
- dcam: https://purl.org/dc/dcam/
11
-
12
- iolanta:outputs:
13
- "@type": "@id"
14
-
15
- iolanta:when-no-facet-found:
16
- "@type": "@id"
4
+ rdfs: http://www.w3.org/2000/01/rdf-schema#
17
5
 
18
6
  $: rdfs:label
19
7
  →:
20
8
  "@type": "@id"
21
9
  "@id": iolanta:outputs
22
10
 
23
- ⊆:
24
- "@type": "@id"
25
- "@id": rdfs:subClassOf
26
-
27
- ⪯:
28
- "@type": "@id"
29
- "@id": iolanta:is-preferred-over
30
-
31
- ↦: iolanta:matches
32
- iolanta:hasDefaultFacet:
33
- "@type": "@id"
11
+ ↦:
12
+ "@id": iolanta:matches
13
+ "@type": iolanta:SPARQLText
34
14
 
35
15
  $id: pkg:pypi/iolanta#mermaid-graph
36
16
  $: Mermaid Graph
17
+
37
18
  →:
38
19
  $id: https://iolanta.tech/datatypes/mermaid
39
20
  $: Mermaid
21
+ $type: iolanta:OutputDatatype
22
+
40
23
  ↦:
41
24
  - ASK WHERE { GRAPH $this { ?s ?p ?o } }
42
25
  - ASK WHERE { $this iolanta:has-sub-graph ?subgraph }
iolanta/mermaid/models.py CHANGED
@@ -1,8 +1,15 @@
1
1
  import enum
2
2
  import hashlib
3
+ import re
3
4
  import textwrap
4
5
  import urllib.parse
5
6
 
7
+
8
+ def escape_label(label: str) -> str:
9
+ """Escape a label to prevent Mermaid from interpreting URLs as markdown links."""
10
+ # Remove https://, http://, and www. prefixes to prevent markdown link parsing
11
+ return label.replace('https://', '').replace('http://', '').replace('www.', '')
12
+
6
13
  from documented import Documented
7
14
  from pydantic import AnyUrl, BaseModel
8
15
  from rdflib import BNode, Literal, URIRef
@@ -29,30 +36,38 @@ class MermaidURINode(Documented, BaseModel, arbitrary_types_allowed=True, frozen
29
36
 
30
37
  @property
31
38
  def maybe_title(self):
32
- return self.title and f'({self.title})'
39
+ if not self.title:
40
+ return ''
41
+ # Escape URLs to prevent Mermaid from interpreting them as markdown links
42
+ safe_title = escape_label(self.title)
43
+ return f'("{safe_title}")'
33
44
 
34
45
  @property
35
46
  def id(self):
36
- return urllib.parse.unquote(str(self.url)).strip('/').replace(':', '_').replace('/', '_').replace('.', '_').replace('#', '_')
47
+ return re.sub(r'[:\/\.#()]', '_', urllib.parse.unquote(str(self.url)).strip('/'))
37
48
 
38
49
 
39
50
  class MermaidLiteral(Documented, BaseModel, arbitrary_types_allowed=True, frozen=True):
40
- """{self.id}[[{self.title}]]"""
51
+ """{self.id}[["{self.title}"]]"""
41
52
 
42
53
  literal: Literal
43
54
 
44
55
  @property
45
56
  def title(self) -> str:
46
- return str(self.literal) or 'EMPTY'
57
+ raw_title = str(self.literal) or 'EMPTY'
58
+ # Replace quotes with safer characters for Mermaid
59
+ return raw_title.replace('"', '"').replace("'", "'")
47
60
 
48
61
  @property
49
62
  def id(self) -> str:
50
- value_hash = hashlib.md5(str(self.literal.value).encode()).hexdigest()
63
+ # Use the lexical form of the literal, not rdflib's .value (which may be empty for typed literals),
64
+ # to ensure different texts get distinct node IDs in Mermaid.
65
+ value_hash = hashlib.md5(str(self.literal).encode()).hexdigest()
51
66
  return f'Literal-{value_hash}'
52
67
 
53
68
 
54
69
  class MermaidBlankNode(Documented, BaseModel, arbitrary_types_allowed=True):
55
- """{self.id}({self.title})"""
70
+ """{self.id}({self.escaped_title})"""
56
71
 
57
72
  node: BNode
58
73
  title: str
@@ -60,11 +75,15 @@ class MermaidBlankNode(Documented, BaseModel, arbitrary_types_allowed=True):
60
75
  @property
61
76
  def id(self) -> str:
62
77
  return self.node.replace('_:', '')
78
+
79
+ @property
80
+ def escaped_title(self) -> str:
81
+ return self.title
63
82
 
64
83
 
65
84
  class MermaidEdge(Documented, BaseModel, arbitrary_types_allowed=True):
66
85
  """
67
- {self.source.id} --- {self.id}(["{self.title}"])--> {self.target.id}
86
+ {self.source.id} --- {self.id}(["{self.escaped_title}"])--> {self.target.id}
68
87
  click {self.id} "{self.predicate}"
69
88
  class {self.id} predicate
70
89
  """
@@ -81,6 +100,11 @@ class MermaidEdge(Documented, BaseModel, arbitrary_types_allowed=True):
81
100
  @property
82
101
  def nodes(self):
83
102
  return [self.source, self.target]
103
+
104
+ @property
105
+ def escaped_title(self) -> str:
106
+ # Escape URLs to prevent Mermaid from interpreting them as markdown links
107
+ return escape_label(self.title)
84
108
 
85
109
 
86
110
  MermaidScalar = MermaidLiteral | MermaidBlankNode | MermaidURINode | MermaidEdge
@@ -88,7 +112,7 @@ MermaidScalar = MermaidLiteral | MermaidBlankNode | MermaidURINode | MermaidEdge
88
112
 
89
113
  class MermaidSubgraph(Documented, BaseModel, arbitrary_types_allowed=True, frozen=True):
90
114
  """
91
- subgraph {self.id}["{self.title}"]
115
+ subgraph {self.id}["{self.escaped_title}"]
92
116
  direction {self.direction}
93
117
  {self.formatted_body}
94
118
  end
@@ -102,6 +126,11 @@ class MermaidSubgraph(Documented, BaseModel, arbitrary_types_allowed=True, froze
102
126
  def id(self):
103
127
  uri_hash = hashlib.md5(str(self.uri).encode()).hexdigest()
104
128
  return f'subgraph_{uri_hash}'
129
+
130
+ @property
131
+ def escaped_title(self) -> str:
132
+ """Escape the subgraph title to prevent markdown link parsing."""
133
+ return escape_label(self.title)
105
134
 
106
135
  @property
107
136
  def formatted_body(self):
@@ -115,7 +144,7 @@ class Diagram(Documented, BaseModel):
115
144
  """
116
145
  graph {self.direction}
117
146
  {self.formatted_body}
118
- classDef predicate fill:none,stroke:none,stroke-width:0px;
147
+ classDef predicate fill:transparent,stroke:transparent,stroke-width:0px;
119
148
  """
120
149
 
121
150
  children: list[MermaidScalar | MermaidSubgraph]
@@ -0,0 +1,3 @@
1
+ ASK WHERE {
2
+ GRAPH $this { ?s ?p ?o }
3
+ }
@@ -24,7 +24,7 @@ from rdflib.plugins.sparql.parserutils import CompValue
24
24
  from rdflib.plugins.sparql.sparql import Query
25
25
  from rdflib.query import Processor
26
26
  from rdflib.term import BNode, Literal, Node
27
- from requests.exceptions import ConnectionError, InvalidSchema
27
+ from requests.exceptions import ConnectionError, HTTPError, InvalidSchema
28
28
  from yaml_ld.document_loaders.content_types import ParserNotFound
29
29
  from yaml_ld.errors import NotFound, YAMLLDError
30
30
  from yarl import URL
@@ -159,7 +159,7 @@ def _extract_from_mapping( # noqa: WPS213
159
159
 
160
160
  case unknown_name:
161
161
  formatted_keys = ', '.join(algebra.keys())
162
- loguru.logger.error(
162
+ loguru.logger.info(
163
163
  'Unknown SPARQL expression '
164
164
  f'{unknown_name}({formatted_keys}): {algebra}',
165
165
  )
@@ -512,7 +512,7 @@ class GlobalSPARQLProcessor(Processor): # noqa: WPS338, WPS214
512
512
  try:
513
513
  self.load(url)
514
514
  except Exception as err:
515
- self.logger.error(f'Failed to load {url}: {err}', url, err)
515
+ self.logger.exception(f'Failed to load {url}: {err}', url, err)
516
516
 
517
517
  NanopubQueryPlugin(graph=self.graph)(query, bindings=initBindings)
518
518
 
@@ -687,6 +687,9 @@ class GlobalSPARQLProcessor(Processor): # noqa: WPS338, WPS214
687
687
  except YAMLLDError as yaml_ld_error:
688
688
  self.logger.error(f'{source} | {yaml_ld_error}')
689
689
  return Loaded()
690
+ except HTTPError as http_error:
691
+ self.logger.warning(f'{source} | HTTP error: {http_error}')
692
+ return Loaded()
690
693
 
691
694
  try:
692
695
  quads = list(
@@ -1,16 +1,15 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: iolanta
3
- Version: 2.1.1
3
+ Version: 2.1.6
4
4
  Summary: Semantic Web browser
5
5
  License: MIT
6
6
  Author: Anatoly Scherbakov
7
7
  Author-email: altaisoft@gmail.com
8
- Requires-Python: >=3.10,<4.0
8
+ Requires-Python: >=3.12,<4.0
9
9
  Classifier: License :: OSI Approved :: MIT License
10
10
  Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.10
12
- Classifier: Programming Language :: Python :: 3.11
13
11
  Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
14
13
  Provides-Extra: all
15
14
  Requires-Dist: boltons (>=24.0.0)
16
15
  Requires-Dist: classes (>=0.4.0)
@@ -18,10 +17,11 @@ Requires-Dist: deepmerge (>=0.1.1)
18
17
  Requires-Dist: diskcache (>=5.6.3)
19
18
  Requires-Dist: documented (>=0.1.1)
20
19
  Requires-Dist: dominate (>=2.6.0)
20
+ Requires-Dist: fastmcp (>=2.12.4,<3.0.0)
21
21
  Requires-Dist: funcy (>=2.0)
22
22
  Requires-Dist: loguru (>=0.7.3)
23
23
  Requires-Dist: more-itertools (>=9.0.0)
24
- Requires-Dist: nanopub (>=2.0.1)
24
+ Requires-Dist: nanopub (>=2.1.0,<3.0.0)
25
25
  Requires-Dist: owlrl (>=6.0.2)
26
26
  Requires-Dist: oxrdflib (>=0.4.0)
27
27
  Requires-Dist: packageurl-python (>=0.17.5)
@@ -33,7 +33,7 @@ Requires-Dist: rich (>=13.3.1)
33
33
  Requires-Dist: textual (>=0.83.0)
34
34
  Requires-Dist: typer (>=0.9.0)
35
35
  Requires-Dist: watchfiles (>=1.0.4)
36
- Requires-Dist: yaml-ld (>=1.1.10)
36
+ Requires-Dist: yaml-ld (>=1.1.14,<2.0.0)
37
37
  Requires-Dist: yarl (>=1.9.4)
38
38
  Description-Content-Type: text/markdown
39
39
 
@@ -6,7 +6,7 @@ iolanta/cli/formatters/choose.py,sha256=LWzsO_9IBSSgYNIyLlItkp8TNvpW3v6YCQ8-6kbI
6
6
  iolanta/cli/formatters/csv.py,sha256=ceJ_DTz0beqeK-d6FPBQqqjXrziEfF0FRSLoGZCt_fs,760
7
7
  iolanta/cli/formatters/json.py,sha256=Og5B9UrSM_0NWqW5Afpsy6WH8ZfYgPMVXYvT3i-43Jc,748
8
8
  iolanta/cli/formatters/pretty.py,sha256=IypZRAr2vNqcXFY6NOIc75mpyfpFWh56aCBlOPDDieQ,2901
9
- iolanta/cli/main.py,sha256=GVtdBQjAOs6VlsE_uztTXHbmRXUk_S6gN4LWqACJGS8,3157
9
+ iolanta/cli/main.py,sha256=_fJ9XAwANaYvwZ9ige4PafaB4Mx-InYibEXXExUFrZ8,4524
10
10
  iolanta/cli/models.py,sha256=cjbpowdzI4wAP0DUk3qoVHyimk6AZwlXi9CGmusZTuM,159
11
11
  iolanta/cli/pretty_print.py,sha256=M6E3TmhzA6JY5GeUVmDZLmOh5u70-393PVit4voFKDI,977
12
12
  iolanta/context.py,sha256=bZR-tbZIrDQ-Vby01PMDZ6ifxM-0YMK68RJvAsyqCTs,507
@@ -15,6 +15,10 @@ iolanta/data/context.yaml,sha256=LUBasiBKgQeGAYjYV_T5XvgPlrdzACeKaZwY_rKzjtI,163
15
15
  iolanta/data/graph-triples.yamlld,sha256=rtn-HfbijaqbmjCrKv-2pVV_aaJhB_9_OqXA_yLznCs,209
16
16
  iolanta/data/iolanta.yaml,sha256=xubIFBNU02lmFXhgOSuyQwUcZD3xCqVfeVAZMvOxKbI,1433
17
17
  iolanta/data/textual-browser.yaml,sha256=nJbDS0B3G-emM9vCu2DIlWZBhzmWbO3zrWkt_Rmv5uA,3700
18
+ iolanta/declension/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
+ iolanta/declension/data/declension.yamlld,sha256=fA1OptmhyIK7-mNy3fbK5G07OE4ueBW2x812b7VQkzA,975
20
+ iolanta/declension/facet.py,sha256=7SsPACjeIGnONLhfjB4KBjqt-FRISVpZenshJzqC0A8,1349
21
+ iolanta/declension/sparql/declension.sparql,sha256=T84bfCNDXodmFEH26S45DyOJHoWz3T4cC7hSwtAcFSw,185
18
22
  iolanta/ensure_is_context.py,sha256=9aok8asyEx7KPesOR28VBDb3Ch9kfc3eoCpQSJwj07U,717
19
23
  iolanta/entry_points.py,sha256=DZbf-udlEwELFGqeWENj0M2BOUPOWlmGJdqyaEtnot0,504
20
24
  iolanta/errors.py,sha256=t_RltahnoEvcytVa1BOq2MADgHps3JNd_h5-SFu7_wM,1250
@@ -22,41 +26,42 @@ iolanta/facets/__init__.py,sha256=u0Ff76kmsXTaaFB8sCEfrgA_fP79rBxSqllh47d8Y0o,39
22
26
  iolanta/facets/cli/__init__.py,sha256=3XfuW-qgis0sS66lt36R2inY_NGIjNg5oGWK8fchffs,150
23
27
  iolanta/facets/cli/base.py,sha256=Fdb5PH_fPHRNexa1UgFChY4-ZFkxxVpGbAkW6yxXuIs,307
24
28
  iolanta/facets/cli/default.py,sha256=shxR2yZDGBGUr4RP_xxsX264StPuvrPu09B_hphIZkA,365
25
- iolanta/facets/cli/record.py,sha256=lBsECxLkwVSXC-yHmUwfosxAdLBI-0UoqHe8GOCablY,1219
29
+ iolanta/facets/cli/record.py,sha256=-nIhe6hXkoI5LJtZhqBoT8ZkYGxlLwMDbPc-xmwNhrE,1221
26
30
  iolanta/facets/cli/sparql/link.sparql,sha256=WtWEfLAvdGc2gP0IhZil6Vglkydc3VO24vk4GwRnR5I,163
27
31
  iolanta/facets/cli/sparql/record.sparql,sha256=GBWkmNelvaSDbvl7v0-LsJHdjFPbsSAW49kNFOUeoGQ,63
28
32
  iolanta/facets/errors.py,sha256=sEBmnzhFcRIgOT18hfNwyMMjry0waa6IB-jC2NVTA50,4124
29
- iolanta/facets/facet.py,sha256=gAOkosh9B_Lufh3ia9W24hgt4LEIhG-UJcQF4BzMvno,2600
33
+ iolanta/facets/facet.py,sha256=hV_NzUEIiy25EENXd0qGRyJ1SCRuztVdy1ZFUK3Sc44,2070
30
34
  iolanta/facets/foaf_person_title/__init__.py,sha256=oj4MNVQvv8Dysb27xiWjtZCii8-nT7-WFa3WMWUwbtU,67
31
- iolanta/facets/foaf_person_title/facet.py,sha256=Q9TajjGp1v729quDzAM_Lfzawls3yujp1Z_6jXrG3gY,632
35
+ iolanta/facets/foaf_person_title/facet.py,sha256=_lKtRosZWuKpjKZ3Ssdq79jVhiLE53jaf22Rnq4HCxs,634
32
36
  iolanta/facets/foaf_person_title/sparql/names.sparql,sha256=p_2hHZXhEaJ8IwGlvLoN0vb0vhGqo44uAVRpDyTzflU,107
33
37
  iolanta/facets/generic/__init__.py,sha256=DZTysMi4uvDzm642422W6khSvtNaqhqunbtiPyqWTL8,116
34
- iolanta/facets/generic/bool_literal.py,sha256=-M7w7h9FgGCZnhHlg-u36cshqXDcTMuedHQPtXMfoS0,398
35
- iolanta/facets/generic/date_literal.py,sha256=OWK6se6vavBfZI3-Nt6Q0dXzjq88N_tIBFM-v2QLmyU,557
36
- iolanta/facets/generic/default.py,sha256=fvJAAi0d9wd1F5SdY7V7oJRhj7qqQXAg8fq1kWw66Vs,1884
38
+ iolanta/facets/generic/bool_literal.py,sha256=0K8HRLFmSjD0gpnEAiTgEw7YylhM_rTr5XmkoVrPnf0,401
39
+ iolanta/facets/generic/date_literal.py,sha256=GFTnbAWa01CnI7yy-OG6j3dx9yZKwdfUGGsl6j8WbpY,558
40
+ iolanta/facets/generic/default.py,sha256=syFQMiypkOSFqvlUMWr1pnlw2Mf_s6WOu2S7ZysfX24,1886
37
41
  iolanta/facets/generic/sparql/default.sparql,sha256=6Z-gilWIT69Wx6mlNdKH2ocy5lkvSzkXMXDpAJA3ooU,546
38
42
  iolanta/facets/html/__init__.py,sha256=iKwhZnYEP7qe8V_inDehTPz63Qb_MjcR6c6aHHBwWxY,48
39
43
  iolanta/facets/html/base.py,sha256=JcpK7YM_QQE9vwH5w5F_EgPkPv-XRzOrcZlVSy4LhIs,163
40
- iolanta/facets/html/code_literal.py,sha256=qCddzBrg6Y5XMIKohFQ52Tf9GPOcU7bj83tfAU1FLLU,394
44
+ iolanta/facets/html/code_literal.py,sha256=hdbC304zoa9ar9Lp-dH7w079GxVGlJo8U98SOe6U82g,397
41
45
  iolanta/facets/html/default.py,sha256=Dmf_kYiL2M954iigyYsiWrMstwZ1nvxKetuR6aW3xYY,647
42
- iolanta/facets/icon.py,sha256=ddZcolx1Q5_wo3w0jqiCzcc5Lsru6-jA7s7oAd1T8Og,494
43
- iolanta/facets/locator.py,sha256=b9TEK5_5SklTfEc6lUt7DJt1mKXsiL_urA2zxMk59EY,9152
46
+ iolanta/facets/icon.py,sha256=Dubh9eCvb4kj-ppEJsTno_mn78og8YIRnDrmcefOsgs,495
47
+ iolanta/facets/locator/sparql/get-query-to-facet.sparql,sha256=ZoXrclgZPy0FpPhVVMb6VnIXLIUgIc-Q7Pa5ySsNSSU,114
48
+ iolanta/facets/locator.py,sha256=swDkDqo_N8GEPtkDRh-Tp7npyLuPUaZpZDHZPUc2Om4,9089
44
49
  iolanta/facets/page_title.py,sha256=TwgZK2g_e5UoWYjKNgDzzkmq1EI3cY58680iC8N9kZI,1407
45
- iolanta/facets/qname.py,sha256=ztyBbjjcW8dNZzuiNMqhcWfAUxk-gSjbseVGrQE7kVY,531
50
+ iolanta/facets/qname.py,sha256=Z2wjDWV90Z4vuwLj31MSf5EBGTb0dxzjlKl-Iv4dPao,533
46
51
  iolanta/facets/textual_browser/__init__.py,sha256=sKgDvXOwib9n9d63kdtKCEv26-FoL0VN6zxDmfcheZ8,104
47
- iolanta/facets/textual_browser/app.py,sha256=6-cmEkwRqj9UptVvXKVNIxT3PcDDOZP1OLpv8gPmB_Q,3202
48
- iolanta/facets/textual_browser/facet.py,sha256=zFynpMWr0iYaem-imbft5-2tjbkrDQEndYfHDlqqHUQ,740
52
+ iolanta/facets/textual_browser/app.py,sha256=rF34KbWi0L-Mozwzm-wzBS-3OqCcwbaXl0GZCl4YpAg,3503
53
+ iolanta/facets/textual_browser/facet.py,sha256=5mX1l6P-Ga7buzXmItxSpta6G_D4Fvwv8H6mU8-3g80,742
49
54
  iolanta/facets/textual_browser/history.py,sha256=b3jTwVkVe0ZBcYkHGJ_zKIV4MSMScDdabmLQIjOZfes,1087
50
55
  iolanta/facets/textual_browser/home.py,sha256=GfDD1G2HiwdLkPkNdcYRqVIxDl5tWH9fewh_FJb8G-I,384
51
56
  iolanta/facets/textual_browser/location.py,sha256=w0La8bVTpJiVo1_hFTDQeIUdDdqfhYnoihuZW-f130c,205
52
57
  iolanta/facets/textual_browser/models.py,sha256=DqTBjhkkTt5mNwqr4DzNbPSqzV-QtNqfKj7wpn6T3ao,173
53
58
  iolanta/facets/textual_browser/page.py,sha256=NkcQ5rSKZRbp63C8ozgsR_iVhcKHGv_SytUCQyGa7ss,786
54
- iolanta/facets/textual_browser/page_switcher.py,sha256=hZT9FFMXJf7t8V2ztsqsNNCmGY8CPx39mlEKJjhRsPA,9958
59
+ iolanta/facets/textual_browser/page_switcher.py,sha256=ryymmjN_q7Ukk-PY-Gh2XJozdBgkloHhIDPpW2KxWnI,9794
55
60
  iolanta/facets/textual_class/__init__.py,sha256=tiL0p-3JspGcBRj4qa3rmoBFAuadk71l2ja2lJN6CEs,75
56
- iolanta/facets/textual_class/facets.py,sha256=tascZiue3tbYfpIsnP8yY2dgXQIQzoQ_HPzU7DbVbao,5999
57
- iolanta/facets/textual_class/sparql/instances.sparql,sha256=EW4BmuNxiRDA8djuEtvZpLLJlNSIshvId4ExlaYPcZE,106
61
+ iolanta/facets/textual_class/facets.py,sha256=pz7NkT4_5wgMH0NIKxOoURQDk-qhl022OQWgbmtrC8w,6003
62
+ iolanta/facets/textual_class/sparql/instances.sparql,sha256=v0rHyr0Ha-ioZ2ssv0ytqeO8-Qt1xnX9FKfwSstttzI,230
58
63
  iolanta/facets/textual_default/__init__.py,sha256=snxA0FEY9qfAxNv3MlZLrJsXugD4dvs5hLStZWV7soM,158
59
- iolanta/facets/textual_default/facets.py,sha256=Pf5GttQ7EG0ZodjwwVXzYMffHus3MAZdJUIcbddcYtw,4738
64
+ iolanta/facets/textual_default/facets.py,sha256=Cw5_T7p8G_TNqMhK05FQYE0Bra-Vr4ZdqMBBhLbsOe0,4743
60
65
  iolanta/facets/textual_default/sparql/inverse-properties.sparql,sha256=daHNdhmh92Q77CSf7ULbhxg57CuYsRFfMnXQz4VYEug,64
61
66
  iolanta/facets/textual_default/sparql/label.sparql,sha256=IWAkkgMKtIZ7Zpg8LUJ5fDZ9tiI8fiRYZo-zT61Fong,121
62
67
  iolanta/facets/textual_default/sparql/nodes-for-property.sparql,sha256=J9vg0Pz2HXDlPCeZ6IS2C0wODrpYDuNeD6DYT6UdNsU,68
@@ -64,40 +69,53 @@ iolanta/facets/textual_default/sparql/properties.sparql,sha256=stDbvFP4g6YKYphpN
64
69
  iolanta/facets/textual_default/tcss/default.tcss,sha256=v6k6LvZMndRW4t9Iq-7QF59U_LJTdohRsyavwTY5ruI,69
65
70
  iolanta/facets/textual_default/templates/default.md,sha256=CuD5lISsE2eAVnm2z6kfNff-vEgrNG95Wi5LTgkieWY,21
66
71
  iolanta/facets/textual_default/triple_uri_ref.py,sha256=XfuNPaAe-YxH8IyrdrHQ641aWh5zVMVs0L0WC3D6A4M,1279
67
- iolanta/facets/textual_default/widgets.py,sha256=9qZbJfLvf9yilyQjW6IlCk1AiD8gTmfvaFuLLGQMnGU,9177
72
+ iolanta/facets/textual_default/widgets.py,sha256=w6wk_x72CANmZk9XHS7G0YOT3h3IoitKkrFBuyTI81o,9177
68
73
  iolanta/facets/textual_graph/__init__.py,sha256=DWd2gljzL8SiyYKQdBH78HouF1EMqgCH-w0K5OEmL2I,59
69
- iolanta/facets/textual_graph/facets.py,sha256=NGg0i1XYmdR8gjMd-D4Ckvu_n7m7s1FA68VSUm7cpj0,873
74
+ iolanta/facets/textual_graph/facets.py,sha256=ed6zt7DnAlwWkOB2D3MDQrtKB3tNiegPpZbRKIoz5Zg,876
70
75
  iolanta/facets/textual_graph/sparql/triples.sparql,sha256=5rFVGcvZzEHZj2opQQp0YlxJLpEdl-r1RjkPwo8j7t0,145
71
- iolanta/facets/textual_graph_triples.py,sha256=oJa4pj71r-gODYk9otIrq-tSiV2SsaofhErUXJWRlKE,3864
76
+ iolanta/facets/textual_graph_triples.py,sha256=-Z3aKOMsWjprvU9563Z8OwaHz8KchHN_dxhKslliywo,3865
77
+ iolanta/facets/textual_graphs/__init__.py,sha256=w-m8SVtjFBn2ipQaO4rqbAIXqa3TQiYRatJuqtPdd0U,116
78
+ iolanta/facets/textual_graphs/data/textual_graphs.yamlld,sha256=pj3CRUEzgfYx0r-UY4qguz9rMYCyrNguu0kCUg7cPQM,561
79
+ iolanta/facets/textual_graphs/facets.py,sha256=U7nlrt2IMSCMBi0ZIrOhN53DH7b-pMgAHNbFg2pw208,4094
80
+ iolanta/facets/textual_graphs/sparql/graphs.sparql,sha256=4QxRD5BDB9uURpBXITPgpEk3FwCClAmDJdQ55vvmbfw,135
72
81
  iolanta/facets/textual_link/__init__.py,sha256=ShlMaq2nrpinGZFutjGNKaZQhGKQGOz_VUQzUqq3U7o,95
73
- iolanta/facets/textual_link/facet.py,sha256=XJXq97M3_IJBXSYWV3NAYzT96TrvNDgrUQXLP81d3K0,655
82
+ iolanta/facets/textual_link/facet.py,sha256=l4gbNoJrZpp3qUAyn5AfXHRj_GdMxnjqZ14GPYhJWHk,659
74
83
  iolanta/facets/textual_nanopublication/__init__.py,sha256=ZYYw08MZbIiTpX4xm8AJ3eJnu9GgdOeuRDVibBDOtZc,114
75
- iolanta/facets/textual_nanopublication/facet.py,sha256=1F-8E5tU0n_ukHPqcnksu8UlmRyyL_vxgG4qUWFp5ZA,369
84
+ iolanta/facets/textual_nanopublication/facet.py,sha256=jor9FwB9muJpRr6EImjoQ0SuiUVNXOJRiwHMkRCfSFQ,370
76
85
  iolanta/facets/textual_nanopublication/models.py,sha256=MphggSvKmYac6v866GOKW5lcQjNIbGvwIuJonKuQRVs,177
77
86
  iolanta/facets/textual_nanopublication/nanopublication_widget.py,sha256=sQPgEx25XJ15VqB5zjZuz2q2bf_B5GWXEp32FAufxQ4,2387
78
87
  iolanta/facets/textual_nanopublication/term_list_widget.py,sha256=NZNATKjFmgI2sE5R0ebyQh5Qk2g-kf-MT4YZ-Vw78M4,992
79
88
  iolanta/facets/textual_nanopublication/term_widget.py,sha256=uI5msCTSIYumAIS3I8nBfUz57_vRzvCKkouevrS3Qwk,3536
80
- iolanta/facets/textual_no_facet_found.py,sha256=xNAQslZuMU-HLZh6250Siz3EnSE_ZVt-YhksUTiU_Ag,2485
89
+ iolanta/facets/textual_no_facet_found.py,sha256=DZJKHUy-bARGi5UG0gOh70q4-uEpS_R3C-XO4pF3oiE,2608
81
90
  iolanta/facets/textual_ontology/__init__.py,sha256=3H6bfYaEbXFr90C6ZpGWC4O-24uaO18tnTXx7mckQSA,94
82
- iolanta/facets/textual_ontology/facets.py,sha256=60g8ANmePb9_i_-d4ui-FdtNwg9aktrOKXHkTQtLp1w,3338
91
+ iolanta/facets/textual_ontology/facets.py,sha256=jc56d_M7CJ2lUbiohdux8KGrtF-pcS_jsNBOIx7UXsE,3341
83
92
  iolanta/facets/textual_ontology/sparql/terms.sparql,sha256=oVLxN452nqog_95qRaTWnvar6rxPNxPrRonSo7oFFTg,324
84
93
  iolanta/facets/textual_ontology/sparql/visualization-vocab.sparql,sha256=q9TmU15deL0da28mpo_8W8fgMSEcENfYeqLyM0zVbTg,65
85
94
  iolanta/facets/textual_property_pairs_table.py,sha256=Drqc_G_6QhzNmrrfDU170eKTGrVmvQ6JMYu4ir--iUk,4176
86
95
  iolanta/facets/textual_provenance/__init__.py,sha256=k5-_iK8Lrdwr5ZEJaDxq-UhGYe4G_adXVqGfOA5DAP8,114
87
- iolanta/facets/textual_provenance/facets.py,sha256=vv3UQsI2duB36DW5Zkw3sqgAXBPmK_xAo7cU0O7jF8g,3767
96
+ iolanta/facets/textual_provenance/facets.py,sha256=7n4PalKdOWqCoYKocto9H6RinSBmWWyV-jgXs6t7q94,3768
88
97
  iolanta/facets/textual_provenance/sparql/graphs.sparql,sha256=B45uKFd-1vrBuMDSbTURjUUEjHt51vAbqdL4tUcgMvk,103
89
98
  iolanta/facets/textual_provenance/sparql/triples.sparql,sha256=V-EdVuWbGHY3MspbJIMpwxPQautLDqJJV-AmihDjSHc,53
90
99
  iolanta/facets/title/__init__.py,sha256=fxpkG-YvHDp6eiVL3o7BbwhPMZZe-1R2Qi6S36QCTf8,77
91
- iolanta/facets/title/facets.py,sha256=41cWNdisyb9dPJowSgTIQa-rmFCI4WUb-EYSFDr3GI0,836
100
+ iolanta/facets/title/facets.py,sha256=0XfdI1FKETXV8vo92FssTf4e0MTThlVJRfuC8RC67m8,744
92
101
  iolanta/facets/title/sparql/title.sparql,sha256=VKHeE9NvV6sFgVGvsLQD9z__J4APj8TDHLT4Rk-Ascc,1102
93
102
  iolanta/facets/wikibase_statement_title/__init__.py,sha256=_yk1akxgSJOiUBJIc8QGrD2vovvmx_iw_vJDuv1rD7M,91
94
- iolanta/facets/wikibase_statement_title/facets.py,sha256=mUH7twlAgoeX7DgLQuRBQv4ORT6GWbN-0eJ1aliSfiQ,724
103
+ iolanta/facets/wikibase_statement_title/facets.py,sha256=gNRqiwOTMxyyHYvb_vIrfd-4ipb8wfyJ4GgPcQdyy9E,726
95
104
  iolanta/facets/wikibase_statement_title/sparql/statement-title.sparql,sha256=n07DQWxKqB5c3CA4kacq2HSN0R0dLgnMnLP1AxMo5YA,320
96
- iolanta/iolanta.py,sha256=uM5vmK96Q_GsqXM-bBpQXoxwqs25K-YGYrZvWWFTsDA,11072
105
+ iolanta/iolanta.py,sha256=ONIjejjidXfRIe9pVjCxEyI5Jo1yZdn-XGLuo73tcSw,11074
106
+ iolanta/labeled_triple_set/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
+ iolanta/labeled_triple_set/data/labeled_triple_set.yamlld,sha256=RqVhaXTIDA2Fip32E1TlH4cn_sDLC7H-NGZ5XpK-hio,1015
108
+ iolanta/labeled_triple_set/labeled_triple_set.py,sha256=o4IgvTvPd0mzBtpgHYd4n1xpujYdAvWBr6gIYwp5vnA,4061
109
+ iolanta/labeled_triple_set/sparql/triples.sparql,sha256=VsCmYN5AX7jSIiFm-SqLcRcOvUVj8yyZI4PSzKROtQw,82
110
+ iolanta/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
+ iolanta/mcp/cli.py,sha256=vWlcvyzB54efTtFEZ7VEfwuePhOqQo0_kRplz3syaqM,1114
112
+ iolanta/mcp/prompts/nanopublication_assertion_authoring_rules.md,sha256=Z5YL9YwcLHCqA4zQK2ziSQYgyR4SlhUO9LV_zHGf0JQ,2643
113
+ iolanta/mcp/prompts/rules.md,sha256=LddpoNfUACfvWBNJ_ArAyJfP2zlQstlXS2QA6GCl9QI,4651
97
114
  iolanta/mermaid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
- iolanta/mermaid/facet.py,sha256=0SMzwkjtB3xjCQRW-XwOB5P7zVJdUCDv8c_XmanvqP0,4068
99
- iolanta/mermaid/mermaid.yamlld,sha256=j5yQ6A1M_Fn4cq5WYISz8MfWw6skYdoB0lvcI68ahyw,968
100
- iolanta/mermaid/models.py,sha256=v0loPqJYKpylVBaq89yFdk8iNxyzvN9Ih_ozAbhD4pk,3197
115
+ iolanta/mermaid/facet.py,sha256=8mLOBrzlY84jiWhtJNY5BkXPDpRhL2OB1LUwwwNS1X0,4065
116
+ iolanta/mermaid/mermaid.yamlld,sha256=G_8lqNfs6S7pz9koDC8xAaic4EaHsYnFLgexDVyMuCU,552
117
+ iolanta/mermaid/models.py,sha256=mlhtkqChpF-5z4Nt3s8a0j64cuT34BUKxLIYNS2RcIA,4383
118
+ iolanta/mermaid/sparql/ask-has-triples.sparql,sha256=mOYJ_rutEG_15PKTCHSv2GqzbkAawIn1U2kjkIr_Me0,41
101
119
  iolanta/mermaid/sparql/graph.sparql,sha256=mDGf05od3CUFhzI6rcqt5ZMVy-gSKDu-WxmV_zpIsVI,62
102
120
  iolanta/mermaid/sparql/subgraphs.sparql,sha256=VuoOYr_ZtKXXRrBpAEJek0mBRzR9EV-KnKENgAbkzCs,71
103
121
  iolanta/models.py,sha256=M-1dTxPwjTyUgQ4VCOiH6Q7ltNJiDPG0l1XQH430Omo,3250
@@ -116,12 +134,12 @@ iolanta/sparqlspace/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
116
134
  iolanta/sparqlspace/cli.py,sha256=pb6q03lzrU8OaZ4A3QAQEmaFYcQ_-sHUrPhRs6GE88w,1590
117
135
  iolanta/sparqlspace/inference/wikibase-claim.sparql,sha256=JSawj3VTc9ZPoU9mvh1w1AMYb3cWyZ3x1rEYWUsKZ6A,209
118
136
  iolanta/sparqlspace/inference/wikibase-statement-property.sparql,sha256=SkSHZZlxWVDwBM3aLo0Q7hLuOj9BsIQnXtcuAuwaxqU,240
119
- iolanta/sparqlspace/processor.py,sha256=0Rk7ZeLWifdnmnKL5EZc39JRuMfsxT2RBUv6vgg3di0,23995
137
+ iolanta/sparqlspace/processor.py,sha256=IkBPsijinHvryp0OnlE2OW6HLFbfFGhZuAQ-ytQTg8w,24149
120
138
  iolanta/sparqlspace/sparqlspace.py,sha256=Y8_ZPXwuGEXbEes6XQjaQWA2Zv9y8SWxMPDFdqVBGFo,796
121
139
  iolanta/widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
140
  iolanta/widgets/description.py,sha256=98Qd3FwT9r8sYqKjl9ZEptaVX9jJ2ULWf0uy3j52p5o,800
123
141
  iolanta/widgets/mixin.py,sha256=nDRCOc-gizCf1a5DAcYs4hW8eZEd6pHBPFsfm0ncv7E,251
124
- iolanta-2.1.1.dist-info/METADATA,sha256=PC0tU9wgfi3BMHGEcI19gFVTUpQaIWxoGz2PcAoVx_8,2268
125
- iolanta-2.1.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
126
- iolanta-2.1.1.dist-info/entry_points.txt,sha256=H2bCnnscOwzl0QMoI86ifQ6hm1NhyYnrGQbMd0Kp6dA,1445
127
- iolanta-2.1.1.dist-info/RECORD,,
142
+ iolanta-2.1.6.dist-info/METADATA,sha256=4v_M-GuBzoo1gqKMzlr3S9M9oy83i-RfA4U-qfcGHCg,2272
143
+ iolanta-2.1.6.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
144
+ iolanta-2.1.6.dist-info/entry_points.txt,sha256=TK9UQRFPXLEoOJOfyf9ywntoXHXSzkZyHV--lZ10eW0,1678
145
+ iolanta-2.1.6.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.0
2
+ Generator: poetry-core 2.1.3
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,16 +1,20 @@
1
1
  [console_scripts]
2
2
  iolanta=iolanta.cli:app
3
+ iolanta-mcp=iolanta.mcp.cli:app
3
4
  sparqlspace=iolanta.sparqlspace.cli:app
4
5
 
5
6
  [iolanta.facets]
6
7
  boolean=iolanta.facets.generic:BoolLiteral
7
8
  icon=iolanta.facets.icon:IconFacet
9
+ labeled-triple-set=iolanta.labeled_triple_set.labeled_triple_set:LabeledTripleSet
8
10
  mermaid-graph=iolanta.mermaid.facet:Mermaid
9
11
  qname=iolanta.facets.qname:QNameFacet
12
+ rich-declension-table=iolanta.declension.facet:RichDeclensionTable
10
13
  textual-browser=iolanta.facets.textual_browser:TextualBrowserFacet
11
14
  textual-class=iolanta.facets.textual_class:Class
12
15
  textual-graph=iolanta.facets.textual_graph:GraphFacet
13
16
  textual-graph-triples=iolanta.facets.textual_graph_triples:GraphTriplesFacet
17
+ textual-graphs=iolanta.facets.textual_graphs:Graphs
14
18
  textual-inverse-properties=iolanta.facets.textual_default:InverseProperties
15
19
  textual-link=iolanta.facets.textual_link:TextualLinkFacet
16
20
  textual-nanopublication=iolanta.facets.textual_nanopublication:NanopublicationFacet