Form: Add default properties for a new object?
まだ誰も着手していません。
- 主要言語
- TypeScript
- スター
- 153
- フォーク
- 46
- 平均マージ
- 1日 8時間
- マージ済み PR(30日)
- 7
説明
When using ui:Multiple, currently a new object is created and linked to the subject with the specified ui:property.
https://github.com/solid/solid-ui/blob/c4ad302f361cc4a1de24941a475cb66333c43805/src/widgets/forms.js#L273
The form to use for the new object is then specified by ui:part
It appears there is currently no way to specify default properties for the new object, e.g. its rdf:type.
For rdf:type in particular, this means that forms for the new object will not be rendered by solid-panes, which discovers the relevant form based on its class.
Possible solutions
I don't whether there is a need for a more general templating mechanism, but at least for rdf:type, a solution could be to allow ui:Multiple to also use ui:category (as for ui:Classifier) or ui:targetClass (as for ui:Autocomplete)
Another option would be to specify ui:from (as for ui:Choice) instead of ui:part, and choose the ui:creationForm based on the specified rdfs:Class.
Example use case
Generating a new observation
sosa:Observation ui:annotationForm :ObsForm.
:ObservationList ui:annotationForm :ObsListForm.
:ObsListForm
a ui:Multiple;
ui:part :ObsForm;
ui:property rdfs:member;
ui:category sosa:Observation.
:ThisObsList a :ObservationList.
Creating a new object in :ThisObsList would generate:
:ThisObsList rdfs:member :id1639432788935.
:id1639432788935 a sosa:Observation.
Edit: I've got an patch using ui:category here: https://github.com/josephguillaume/my-solidos-patches/blob/2860861f3ce4ddde9a8b0831ca520e4492878991/solid-ui.diff#L32
Edit: incidentally it's possible to get the desired behaviour by using ui:reverse with rdf:type as the ui:property
sosa:Observation ui:annotationForm :ObsForm.
:dummyClass ui:annotationForm :ObsListForm.
sosa:Observation a :dummyClass.
:ObsListForm
a ui:Multiple;
ui:part :ObsForm;
ui:reverse 1;
ui:property rdf:type.
Visiting sosa:Observation builds a form for :dummyClass which generates triples:
:newsubject a sosa:Observation
This might be more of a curiosity than a real solution.
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
src/widgets/forms.js の273行目付近から始め、ui:Multiple が ui:part を、issue で説明されている ui:category、ui:targetClass、ui:from のパターンとどのように扱っているかを比較してください。新しく作成されたオブジェクトの default properties を定義するにはどのアプローチを採用すべきかを、受け入れ条件のケースとして sosa:Observation の例を使って判断してください。完了条件は、新しいオブジェクトがデフォルトの rdf:type を受け取り、solid-panes がそのフォームをレンダリングできることです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- typescript
- 領域
- frontend
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100