iolanta 2.1.9__tar.gz → 2.1.10__tar.gz

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 (151) hide show
  1. {iolanta-2.1.9 → iolanta-2.1.10}/PKG-INFO +1 -1
  2. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/data/iolanta.yaml +9 -1
  3. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/data/textual-browser.yaml +0 -9
  4. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_browser/page_switcher.py +9 -4
  5. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_default/facets.py +2 -0
  6. iolanta-2.1.10/iolanta/facets/textual_default/textual-inverse-properties.yamlld +25 -0
  7. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/title/facets.py +4 -0
  8. iolanta-2.1.10/iolanta/facets/title/title.yamlld +33 -0
  9. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/sparqlspace/processor.py +10 -1
  10. {iolanta-2.1.9 → iolanta-2.1.10}/pyproject.toml +1 -1
  11. {iolanta-2.1.9 → iolanta-2.1.10}/README.md +0 -0
  12. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/__init__.py +0 -0
  13. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/base_plugin.py +0 -0
  14. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/cli/__init__.py +0 -0
  15. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/cli/formatters/__init__.py +0 -0
  16. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/cli/formatters/choose.py +0 -0
  17. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/cli/formatters/csv.py +0 -0
  18. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/cli/formatters/json.py +0 -0
  19. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/cli/formatters/pretty.py +0 -0
  20. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/cli/main.py +0 -0
  21. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/cli/models.py +0 -0
  22. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/cli/pretty_print.py +0 -0
  23. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/context.py +0 -0
  24. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/conversions.py +0 -0
  25. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/data/context.yaml +0 -0
  26. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/data/graph-triples.yamlld +0 -0
  27. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/declension/__init__.py +0 -0
  28. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/declension/data/declension.yamlld +0 -0
  29. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/declension/facet.py +0 -0
  30. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/declension/sparql/declension.sparql +0 -0
  31. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/ensure_is_context.py +0 -0
  32. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/entry_points.py +0 -0
  33. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/errors.py +0 -0
  34. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/__init__.py +0 -0
  35. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/cli/__init__.py +0 -0
  36. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/cli/base.py +0 -0
  37. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/cli/default.py +0 -0
  38. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/cli/record.py +0 -0
  39. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/cli/sparql/link.sparql +0 -0
  40. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/cli/sparql/record.sparql +0 -0
  41. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/errors.py +0 -0
  42. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/facet.py +0 -0
  43. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/foaf_person_title/__init__.py +0 -0
  44. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/foaf_person_title/facet.py +0 -0
  45. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/foaf_person_title/sparql/names.sparql +0 -0
  46. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/generic/__init__.py +0 -0
  47. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/generic/bool_literal.py +0 -0
  48. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/generic/date_literal.py +0 -0
  49. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/generic/default.py +0 -0
  50. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/generic/sparql/default.sparql +0 -0
  51. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/html/__init__.py +0 -0
  52. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/html/base.py +0 -0
  53. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/html/code_literal.py +0 -0
  54. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/html/default.py +0 -0
  55. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/icon.py +0 -0
  56. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/locator/sparql/get-query-to-facet.sparql +0 -0
  57. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/locator.py +0 -0
  58. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/mkdocs_material_insiders_markdown/__init__.py +0 -0
  59. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/mkdocs_material_insiders_markdown/data/mkdocs_material_insiders_markdown.yamlld +0 -0
  60. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/mkdocs_material_insiders_markdown/facet.py +0 -0
  61. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/mkdocs_material_insiders_markdown/templates/datatype.jinja2.md +0 -0
  62. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/page_title.py +0 -0
  63. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/qname.py +0 -0
  64. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_browser/__init__.py +0 -0
  65. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_browser/app.py +0 -0
  66. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_browser/facet.py +0 -0
  67. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_browser/history.py +0 -0
  68. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_browser/home.py +0 -0
  69. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_browser/location.py +0 -0
  70. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_browser/models.py +0 -0
  71. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_browser/page.py +0 -0
  72. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_class/__init__.py +0 -0
  73. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_class/facets.py +0 -0
  74. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_class/sparql/instances.sparql +0 -0
  75. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_class/textual-class.yamlld +0 -0
  76. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_default/__init__.py +0 -0
  77. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_default/sparql/inverse-properties.sparql +0 -0
  78. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_default/sparql/label.sparql +0 -0
  79. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_default/sparql/nodes-for-property.sparql +0 -0
  80. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_default/sparql/properties.sparql +0 -0
  81. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_default/tcss/default.tcss +0 -0
  82. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_default/templates/default.md +0 -0
  83. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_default/triple_uri_ref.py +0 -0
  84. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_default/widgets.py +0 -0
  85. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_graph/__init__.py +0 -0
  86. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_graph/facets.py +0 -0
  87. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_graph/sparql/triples.sparql +0 -0
  88. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_graph_triples.py +0 -0
  89. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_graphs/__init__.py +0 -0
  90. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_graphs/data/textual_graphs.yamlld +0 -0
  91. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_graphs/facets.py +0 -0
  92. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_graphs/sparql/graphs.sparql +0 -0
  93. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_link/__init__.py +0 -0
  94. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_link/facet.py +0 -0
  95. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_nanopublication/__init__.py +0 -0
  96. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_nanopublication/facet.py +0 -0
  97. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_nanopublication/models.py +0 -0
  98. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_nanopublication/nanopublication_widget.py +0 -0
  99. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_nanopublication/term_list_widget.py +0 -0
  100. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_nanopublication/term_widget.py +0 -0
  101. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_no_facet_found.py +0 -0
  102. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_ontology/__init__.py +0 -0
  103. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_ontology/facets.py +0 -0
  104. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_ontology/sparql/terms.sparql +0 -0
  105. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_ontology/sparql/visualization-vocab.sparql +0 -0
  106. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_property_pairs_table.py +0 -0
  107. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_provenance/__init__.py +0 -0
  108. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_provenance/facets.py +0 -0
  109. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_provenance/sparql/graphs.sparql +0 -0
  110. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/textual_provenance/sparql/triples.sparql +0 -0
  111. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/title/__init__.py +0 -0
  112. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/title/sparql/title.sparql +0 -0
  113. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/wikibase_statement_title/__init__.py +0 -0
  114. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/wikibase_statement_title/facets.py +0 -0
  115. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/facets/wikibase_statement_title/sparql/statement-title.sparql +0 -0
  116. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/iolanta.py +0 -0
  117. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/labeled_triple_set/__init__.py +0 -0
  118. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/labeled_triple_set/data/labeled_triple_set.yamlld +0 -0
  119. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/labeled_triple_set/labeled_triple_set.py +0 -0
  120. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/labeled_triple_set/sparql/triples.sparql +0 -0
  121. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/mcp/__init__.py +0 -0
  122. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/mcp/cli.py +0 -0
  123. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/mcp/prompts/nanopublication_assertion_authoring_rules.md +0 -0
  124. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/mcp/prompts/rules.md +0 -0
  125. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/mermaid/__init__.py +0 -0
  126. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/mermaid/facet.py +0 -0
  127. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/mermaid/mermaid.yamlld +0 -0
  128. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/mermaid/models.py +0 -0
  129. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/mermaid/sparql/ask-has-triples.sparql +0 -0
  130. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/mermaid/sparql/graph.sparql +0 -0
  131. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/mermaid/sparql/subgraphs.sparql +0 -0
  132. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/models.py +0 -0
  133. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/namespaces.py +0 -0
  134. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/node_to_qname.py +0 -0
  135. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/parse_quads.py +0 -0
  136. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/plugin.py +0 -0
  137. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/query_result.py +0 -0
  138. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/reformat_blank_nodes.py +0 -0
  139. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/resolvers/__init__.py +0 -0
  140. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/resolvers/base.py +0 -0
  141. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/resolvers/dispatch.py +0 -0
  142. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/resolvers/pypi.py +0 -0
  143. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/resolvers/python_import.py +0 -0
  144. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/sparqlspace/__init__.py +0 -0
  145. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/sparqlspace/cli.py +0 -0
  146. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/sparqlspace/inference/wikidata-prop-label.sparql +0 -0
  147. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/sparqlspace/inference/wikidata-statement-label.sparql +0 -0
  148. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/sparqlspace/sparqlspace.py +0 -0
  149. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/widgets/__init__.py +0 -0
  150. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/widgets/description.py +0 -0
  151. {iolanta-2.1.9 → iolanta-2.1.10}/iolanta/widgets/mixin.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iolanta
3
- Version: 2.1.9
3
+ Version: 2.1.10
4
4
  Summary: Semantic Web browser
5
5
  License: MIT
6
6
  Author: Anatoly Scherbakov
@@ -7,9 +7,17 @@
7
7
  rdfs: "http://www.w3.org/2000/01/rdf-schema#"
8
8
  rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
9
9
 
10
+ owl:onProperty:
11
+ "@type": "@id"
12
+
10
13
  $included:
11
14
  - $id: iolanta:Facet
12
- $type: rdfs:Class
15
+ $type: owl:Class
16
+ rdfs:subClassOf:
17
+ $type: owl:Restriction
18
+ owl:onProperty: iolanta:outputs
19
+ owl:minCardinality: 1
20
+
13
21
  label: Application capable to represent certain nodes of a semantic graph in a form suitable for certain user to interact with.
14
22
 
15
23
  - $id: iolanta:OutputDatatype
@@ -70,15 +70,6 @@
70
70
  FILTER (?graph != <iolanta://_meta>)
71
71
  }
72
72
 
73
- - $id: pkg:pypi/iolanta#textual-inverse-properties
74
- $: Inverse Properties
75
- →: https://iolanta.tech/cli/textual
76
- ↦: |
77
- ASK WHERE {
78
- GRAPH ?graph { ?something ?property $this }
79
- FILTER (?graph != <iolanta://_meta>)
80
- }
81
-
82
73
  - $id: "urn:"
83
74
  iolanta:hasFacetByPrefix:
84
75
  $id: pkg:pypi/iolanta#textual-provenance
@@ -274,12 +274,17 @@ class PageSwitcher(IolantaWidgetMixin, ContentSwitcher): # noqa: WPS214
274
274
  facet_iri: str | None = None,
275
275
  ):
276
276
  """Go to an IRI."""
277
- # Convert string to URIRef if needed.
277
+ # Convert string to Node if needed.
278
278
  # This happens when called via Textual action strings (from keyboard bindings
279
- # in page.py line 24), which serialize URIRefs to strings in f-strings.
280
- # Direct calls (like line 77) pass URIRef objects directly.
279
+ # in page.py line 24), which serialize nodes to strings in f-strings.
280
+ # Direct calls (like line 77) pass Node objects directly.
281
281
  if isinstance(this, str):
282
- this = URIRef(this)
282
+ # Check if string represents a blank node (starts with "_:")
283
+ if this.startswith('_:'):
284
+ # Create a BNode with the full string (including the "_:")
285
+ this = BNode(this)
286
+ else:
287
+ this = URIRef(this)
283
288
 
284
289
  self.run_worker(
285
290
  functools.partial(
@@ -1,4 +1,5 @@
1
1
  import functools
2
+ from pathlib import Path
2
3
  from xml.dom import minidom # noqa: S408
3
4
 
4
5
  import funcy
@@ -177,6 +178,7 @@ class PageFooter(PageTitle):
177
178
  class InverseProperties(TextualDefaultFacet):
178
179
  """Inverse properties view."""
179
180
 
181
+ META = Path(__file__).parent / 'textual-inverse-properties.yamlld'
180
182
  query_file_name = 'inverse-properties.sparql'
181
183
  properties_on_the_right = True
182
184
 
@@ -0,0 +1,25 @@
1
+ "@context":
2
+ "@import": https://json-ld.org/contexts/dollar-convenience.jsonld
3
+ iolanta: https://iolanta.tech/
4
+ rdfs: "http://www.w3.org/2000/01/rdf-schema#"
5
+ rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
6
+
7
+ $: rdfs:label
8
+ →:
9
+ "@type": "@id"
10
+ "@id": iolanta:outputs
11
+ ⪯:
12
+ "@type": "@id"
13
+ "@id": iolanta:is-preferred-over
14
+ ↦: iolanta:matches
15
+
16
+ $id: pkg:pypi/iolanta#textual-inverse-properties
17
+
18
+ $: Inverse Properties
19
+ →: https://iolanta.tech/cli/textual
20
+
21
+ ↦: |
22
+ ASK WHERE {
23
+ GRAPH ?graph { ?something ?property $this }
24
+ FILTER (?graph != <iolanta://_meta>)
25
+ }
@@ -1,3 +1,5 @@
1
+ from pathlib import Path
2
+
1
3
  import funcy
2
4
  from rdflib import URIRef
3
5
 
@@ -17,6 +19,8 @@ PRIORITIES = [ # noqa: WPS407
17
19
  class TitleFacet(Facet[str]):
18
20
  """Title of an object."""
19
21
 
22
+ META = Path(__file__).parent / 'title.yamlld'
23
+
20
24
  def show(self) -> str:
21
25
  """Render title of a thing."""
22
26
  choices = self.stored_query(
@@ -0,0 +1,33 @@
1
+ "@context":
2
+ "@import": https://json-ld.org/contexts/dollar-convenience.jsonld
3
+ iolanta: https://iolanta.tech/
4
+ rdfs: "http://www.w3.org/2000/01/rdf-schema#"
5
+ rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
6
+ xsd: http://www.w3.org/2001/XMLSchema#
7
+
8
+ $: rdfs:label
9
+ →:
10
+ "@type": "@id"
11
+ "@id": iolanta:outputs
12
+ ⪯:
13
+ "@type": "@id"
14
+ "@id": iolanta:is-preferred-over
15
+ ⊆:
16
+ "@type": "@id"
17
+ "@id": rdfs:subClassOf
18
+ iolanta:hasDefaultFacet:
19
+ "@type": "@id"
20
+
21
+ $id: pkg:pypi/iolanta#title
22
+
23
+ $: Title
24
+ →: https://iolanta.tech/datatypes/title
25
+
26
+ "@included":
27
+ - $id: https://iolanta.tech/datatypes/title
28
+ $type: iolanta:OutputDatatype
29
+ $: Title
30
+ rdfs:comment: >
31
+ A short string naming something. Used in links, lists, page titles, property tables, and many other cases.
32
+ ⊆: xsd:string
33
+ iolanta:hasDefaultFacet: pkg:pypi/iolanta#title
@@ -125,7 +125,7 @@ def _extract_from_mapping( # noqa: WPS213
125
125
  term
126
126
  for triple in algebra['triples']
127
127
  for term in triple
128
- if not isinstance(term, Literal)
128
+ if isinstance(term, URIRef)
129
129
  ]
130
130
 
131
131
  case 'Filter' | 'UnaryNot' | 'OrderCondition':
@@ -542,6 +542,15 @@ class GlobalSPARQLProcessor(Processor): # noqa: WPS338, WPS214
542
542
 
543
543
  TODO This function is too big, we have to refactor it.
544
544
  """
545
+ # Blank nodes cannot be loaded from URLs
546
+ if isinstance(source, BNode):
547
+ return Skipped()
548
+
549
+ # Also check if URIRef represents a blank node (can happen if BNode
550
+ # was serialized to string and converted to URIRef)
551
+ if isinstance(source, URIRef) and str(source).startswith('_:'):
552
+ raise ValueError('This is actually a blank node but masked as a URIREF')
553
+
545
554
  url = URL(source)
546
555
 
547
556
  if url.scheme in {'file', 'python', 'local', 'urn', 'doi'}:
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "iolanta"
3
- version = "2.1.9"
3
+ version = "2.1.10"
4
4
  description = "Semantic Web browser"
5
5
  authors = ["Anatoly Scherbakov <altaisoft@gmail.com>"]
6
6
  license = "MIT"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes