Skip to content

Feature/io option refactoring#219

Merged
MaillPierre merged 4 commits into
feature/corese-nextfrom
feature/io_option_refactoring
Oct 31, 2025
Merged

Feature/io option refactoring#219
MaillPierre merged 4 commits into
feature/corese-nextfrom
feature/io_option_refactoring

Conversation

@MaillPierre
Copy link
Copy Markdown
Contributor

While developing the RDFa parser, I came upon a problem with the options of the IO classes:
There are no dedicated classes for the options for most parsers, only for serializers.

So I tried to reorganize the classes and created a few placeholder option classes for parsers.

Before, the classes in the IO category looked like that:

---
  config:
    class:
      hideEmptyMembersBox: true
---
classDiagram

  IOOptions <-- AbstractIOOptions
  IOOptions <|-- RDFParserOptions
  IOOptions <|-- SerializationOption
  SerializationOption <-- AbstractSerializerOption
  AbstractSerializerOption <|-- Rdfc10Options
  AbstractSerializerOption <|-- AbstractNFamilyOption
  AbstractSerializerOption <|-- AbstractTFamilyOption
  AbstractSerializerOption <|-- XmlOption
  RDFParserOptions <|-- RDFParserBaseIRIOptions
  SerializationOption <-- TitaniumJSONLDProcessorOption
  RDFParserBaseIRIOptions <-- TitaniumJSONLDProcessorOption
  AbstractIOOptions <|-- TitaniumJSONLDProcessorOption
  RDFParserBaseIRIOptions <|-- ANTLRTurtleParser.BaseIRIOptions
  AbstractNFamilyOption <|-- NQuadsOption
  AbstractNFamilyOption <|-- NTriplesOption
  AbstractTFamilyOption <|-- TriGOption
  AbstractTFamilyOption <|-- TurtleOption
  AbstractSerializerOption <|-- Rdfc10Options
  class RDFSerializerBNPrefixOptions
Loading

Notably, an unused class for blank node prefixes and several inconsistencies in the inheritance of abstract and interfaces.
I tried to follow the following structure:

---
  config:
    class:
      hideEmptyMembersBox: true
---
classDiagram

  IOOptions <-- AbstractIOOptions
  AbstractIOOptions <|-- AbstractSerializerOptions
  AbstractSerializerOptions <|-- RDFC10Options
  AbstractSerializerOptions <|-- AbstractNFamilyOption
  AbstractSerializerOptions <|-- AbstractTFamilyOption
  AbstractSerializerOptions <|-- XMLSerializerOption
  AbstractSerializerOptions <|-- JSONLDSerializerOption
  AbstractNFamilyOption <|-- NQuadsSerializerOption
  AbstractNFamilyOption <|-- NTriplesSerializerOption
  AbstractTFamilyOption <|-- TriGSerializerOption
  AbstractTFamilyOption <|-- TurtleSerializerOption
  BaseIRIOptions <-- AbstractSerializerOptions
  BaseIRIOptions <-- JSONLDParserOption
  BaseIRIOptions <-- TriGParserOption
  BaseIRIOptions <-- TurtleParserOption
  BaseIRIOptions <-- XMLParserOption
  AbstractIOOptions <-- JSONLDParserOption
  AbstractIOOptions <-- TriGParserOption
  AbstractIOOptions <-- TurtleParserOption
  AbstractIOOptions <-- XMLParserOption
  AbstractIOOptions <-- NTriplesParserOption
  AbstractIOOptions <-- NQuadsParserOption
Loading

I also took the liberty of renaming classes for better consistency, and I removed from the JSON-LD and the Trig/Turtle/NTriples/NQuads classes any mention of the inner parser.

@MaillPierre MaillPierre self-assigned this Oct 30, 2025
@MaillPierre MaillPierre added the Refactoring Issue created during the 2025 refactoring effort label Oct 30, 2025
@github-actions
Copy link
Copy Markdown

Overall Project 49.86% -0.03% 🍏
Files changed 85.85% 🍏

File Coverage
NTriplesSerializerOptions.java 100% 🍏
NTriplesParserOptions.java 100% 🍏
NQuadsParserOptions.java 100% 🍏
NQuadsSerializerOptions.java 100% 🍏
AbstractSerializerOption.java 100% 🍏
TurtleParserOptions.java 100% 🍏
TriGSerializerOptions.java 100% 🍏
RDFXMLParser.java 96.27% 🍏
XMLSerializerOption.java 95.47% 🍏
RDFC10Options.java 95.45% 🍏
TurtleSerializerOptions.java 93.85% -6.15%
DefaultSerializerFactory.java 89.06% -4.69% 🍏
JSONLDSerializer.java 87.1% 🍏
NTriplesSerializer.java 86.11% -11.11%
AbstractRDFParser.java 83.52% -10.99% 🍏
RDFXMLParserOptions.java 83.33% -16.67% 🍏
TriGParserOptions.java 83.33% -16.67% 🍏
JSONLDParser.java 82.33% 🍏
XMLSerializer.java 82% -0.34% 🍏
RDFC10Serializer.java 81.25% 🍏
JSONLDProcessorOptions.java 80.37% 🍏
RDFC10Canonicalizer.java 79.98% 🍏
NQuadsSerializer.java 72% -8%
ParserFactory.java 68.79% -12.06% 🍏
TriGSerializer.java 63.54% -0.71% 🍏
TriGListerner.java 56.76% -1.23%
TurtleSerializer.java 54.88% -1.35%
NQuadsParser.java 51.72% 🍏
TurtleListener.java 51.04% 🍏
NTriplesParser.java 49.73% 🍏
TriGParser.java 49.72% 🍏
TurtleParser.java 42.51% 🍏
ParserConstants.java 36.84% 🍏

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Oct 30, 2025

Test Results

950 tests  ±0   950 ✅ ±0   33s ⏱️ -6s
 70 suites ±0     0 💤 ±0 
 70 files   ±0     0 ❌ ±0 

Results for commit 70d17e7. ± Comparison against base commit c865d2b.

♻️ This comment has been updated with latest results.

Comment thread src/main/java/fr/inria/corese/core/next/impl/io/parser/nquads/NQuadsParser.java Outdated
Comment thread src/main/java/fr/inria/corese/core/next/impl/io/parser/turtle/TurtleParser.java Outdated
Copy link
Copy Markdown
Contributor

@remiceres remiceres left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the diagrams and the reorganization. Just a few minor comments, it’s approved on my side.

Comment thread src/main/java/fr/inria/corese/core/next/impl/io/parser/trig/TriGListerner.java Outdated
Comment thread src/main/java/fr/inria/corese/core/next/impl/io/parser/turtle/TurtleListener.java Outdated
@github-actions
Copy link
Copy Markdown

Overall Project 49.83% -0.03% 🍏
Files changed 85.74% 🍏

File Coverage
NTriplesSerializerOptions.java 100% 🍏
NTriplesParserOptions.java 100% 🍏
NQuadsParserOptions.java 100% 🍏
NQuadsSerializerOptions.java 100% 🍏
AbstractSerializerOption.java 100% 🍏
TurtleParserOptions.java 100% 🍏
TriGSerializerOptions.java 100% 🍏
RDFXMLParser.java 96.27% 🍏
XMLSerializerOption.java 95.47% 🍏
RDFC10Options.java 95.45% 🍏
TurtleSerializerOptions.java 93.85% -6.15%
DefaultSerializerFactory.java 89.06% -4.69% 🍏
JSONLDSerializer.java 87.1% 🍏
AbstractRDFParser.java 84.54% -10.31% 🍏
RDFXMLParserOptions.java 83.33% -16.67% 🍏
TriGParserOptions.java 83.33% -16.67% 🍏
JSONLDParser.java 82.33% 🍏
XMLSerializer.java 82% -0.34% 🍏
JSONLDProcessorOptions.java 80.37% 🍏
RDFC10Canonicalizer.java 79.98% 🍏
RDFC10Serializer.java 79.83% 🍏
NQuadsSerializer.java 72% -8%
NTriplesSerializer.java 69.44% -11.11%
ParserFactory.java 68.79% -12.06% 🍏
TriGSerializer.java 63.54% -0.71% 🍏
TriGListerner.java 56.76% -1.34%
TurtleSerializer.java 54.88% -1.35%
NQuadsParser.java 51.72% 🍏
TurtleListener.java 51.04% 🍏
NTriplesParser.java 49.73% 🍏
TriGParser.java 49.72% 🍏
TurtleParser.java 42.51% 🍏
ParserConstants.java 36.84% 🍏

@MaillPierre MaillPierre merged commit 9b30a8f into feature/corese-next Oct 31, 2025
2 checks passed
@MaillPierre MaillPierre deleted the feature/io_option_refactoring branch October 31, 2025 11:23
@MaillPierre MaillPierre removed the request for review from prbblrypier October 31, 2025 11:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Refactoring Issue created during the 2025 refactoring effort

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants