Skip to content

Commit

Permalink
Dev (#37)
Browse files Browse the repository at this point in the history
* added branch dev

* finished license paragraph in readme

* improved logging

* removed obsolete token

* optimized docker configuration

* fixed docker config

* fixed issues with docker compose (issue #3)

* refactored navigation

* styling improvements

* package update

* fixed bug in OWL approach

* prepared interface for verbalization

* removed unnecessary code

* added fair project type

* simplified access to stores; form simplification; navbar improvements

* migrated from rollup to vite

* updated docker config

* jsconfig fix

* updated .gitignore

* ui and code improvments

* mode is now also stored in localStorage

* restructured frontend

* restructured frontend

* improved componentization + refactoring

* minor

* Fix #8 by adding error handling to license retrieval

* Implement FAIR Project Type for Validation (#27)

* Add comments to existing SHACL project shapes #11

* Temporarily fix error when there is no result path #15

* Model FAIR principles as SHACL rules #11

* Fix semantic versioning regex

* Use match-case syntax #20

* Switch from short SHACL notation to more verbose one

* For files, make check in root directory explicit

* Extract the sh:or and sh:and components into node shapes

* Extend repository representation with homepage, tags, and DOIs in readme

* Introduce property shapes

* Split the shapes graph into several files.

* Fix selection and display of project types

* Extend repository representation for FAIR type (#13)

* Add check for valid version increment to repository representation (#13)

* Create separate methods for each repository property (#22)

* Limit repository representation to requirements of project type (#22)

* Remove unnecessary graph returns and process description literal earlier (#22)

* Make check for valid version increment less strict (#13)

* Visualize repository representation ontology (#21)

* Fix cut off letters at the end of words in diagram (#21)

* Adapt verbalized explanation for FAIR project type (#15)

* For sh:or,and,xone: use source shape instead of message (#15)

* Add URLs of IRIs in README.md (#21)

* Replace <repo> "has_default_branch" with <branch> "is_default_branch" (#13, #21, #22)

* Add minCount to qualifiedValueShapes (#11)

Previously, qualifiedValueShape only included qualifiedMinCount. This meant that a graph was valid in which the specified path did not exist at all.

* Add missing minCount constraints (#11)

* Adapt property shapes to changed default branch representation (#11)

* Include number of violations in validation response (#19)

* Show share of fulfilled criteria, v1 (#19)

* Adjust button of progress bar (#19)

* Adapt checks for files in root directory of default branch (#11)

* Use properties from the Software Description Ontology (#24)

* Integration tests for validation of FAIR project type, part 1 (#18)

* Use camelCase for own properties (as in SDO) (#24)

* Replace "has_section" property with more specific ones from SDO (#24)

* Integration tests for validation of FAIR project type, part 2 (#18)

* Introduce mocking (#18)

* Remove OWL part (#25)

* Fix ZeroDivisionError in benchmark.py (#26)

* Adapt FAIR criteria as a result of tests with 26 repos (#14)

* Remove "using" as keyword for usage documentation because of false positives (#14)

* Recognize all keywords per heading (#31) (#33)

* Improve verbalization on validation and specification page (#34)

* Add sh:message to node- and property-shapes (#29)

* Use messages from the validation report in verbalization (#29)

* Add sh:message to node- and property-shapes (#29)

* Use messages from the validation report in verbalization (#29)

* Make check for open issues more precise

* Display verbalized explanation as an unordered list (#29)

* Extract quality criteria from the shapes graph via RDFLib (#30)

* Add descriptions to the node- and property shapes (#30)

* Use Markdown to format descriptions (#30)

* Use adapted Markdown renderer (#30)

* Update Node and package versions

* Add information about SW requirements and citation to README.md

* Organize quality criteria in Markdown tables (#30)

* Correct cardinality in README.md

* Include lower-case letters in the DOI regex

* Add code and resulting files of the quantitative evaluation.

* Add information on how to execute the quantitative evaluation

* benchmark fusion

* change benchmark to scatterplot

* tests with scatter plot

* reran benchmark

* refactored evaluation

* refactored evaluation

* formatting benchmark results

* cleanup

* statistical analysis of runtime benchmark results

* updated benchmark figures

---------

Co-authored-by: Leon Martin <Leon@Home>
Co-authored-by: Leon Martin <lema@work>
Co-authored-by: Tobias Hummel <71486844+Tobias-TH@users.noreply.github.com>
  • Loading branch information
4 people authored Apr 17, 2024
1 parent 32fb5a2 commit 8b77141
Show file tree
Hide file tree
Showing 14 changed files with 574 additions and 28 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ frontend/node_modules/
frontend/dist/

backend/__pycache__
backend/git_access_token
.github_access_token
backend/data/benchmarks/
!backend/data/benchmarks/.gitkeep

Expand Down
41 changes: 36 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,13 +137,44 @@ Instead of running frontend and backend using `docker compose up`, you can run b

Note that the frontend depends on the backend. The backend should therefore be started first.

### Benchmarks
### Evaluation

To reproduce the performance benchmarks shown in the paper, perform the following steps:
WARNING: Rerunning the evaluation will overwrite the results that are provided in the repository!

- Create a file called `git_access_token` in the [backend](./backend/) folder. Then enter your GitHub access token in that file and save.
- Run `docker compose run --service-ports --entrypoint bash backend` to get a bash that is attached to the frontend container.
- Run `./benchmark.py` to start the backend in development mode.
To reproduce the evaluation results discussed in the SEMANTiCS 2024 paper, perform the following steps:

- Create a file called `.github_access_token` in the [backend](./backend/) folder. Then, enter your GitHub access token in that file and save.
- Run `docker compose run evaluation` to get a bash that is attached to the backend container.
- Run `./python3 evaluation.py` to rerun the evaluation. This includes the FAIRness assessment of GitHub repositories and the runtime benchmark on the same repositories.

The resulting files are place in the [evaluation](./backend/data/evaluation/) folder.

## Citation
If you use this software, please cite it as below:

```bibtex
@inproceedings{DBLP:conf/lwa/MartinH22,
author = {Leon Martin and
Andreas Henrich},
editor = {Pascal Reuss and
Viktor Eisenstadt and
Jakob Michael Sch{\"{o}}nborn and
Jero Sch{\"{a}}fer},
title = {Specification and Validation of Quality Criteria for Git Repositories
using {RDF} and {SHACL}},
booktitle = {Proceedings of the {LWDA} 2022 Workshops: FGWM, FGKD, and FGDB, Hildesheim
(Germany), Oktober 5-7th, 2022},
series = {{CEUR} Workshop Proceedings},
volume = {3341},
pages = {124--135},
publisher = {CEUR-WS.org},
year = {2022},
url = {https://ceur-ws.org/Vol-3341/WM-LWDA\_2022\_CRC\_1149.pdf},
timestamp = {Sat, 30 Sep 2023 09:52:13 +0200},
biburl = {https://dblp.org/rec/conf/lwa/MartinH22.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
```

## Citation
If you use this software, please cite it as below:
Expand Down
2 changes: 2 additions & 0 deletions backend/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ RUN pip install -U flask-cors
RUN pip install -U fire
RUN pip install -U pyshacl
RUN pip install -U numpy
RUN pip install -U pandas
RUN pip install -U matplotlib
RUN pip install -U brokenaxes

VOLUME [ "/src" ]
WORKDIR /src
Expand Down
33 changes: 15 additions & 18 deletions backend/benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

import matplotlib.pyplot as plt

logging.basicConfig(level=logging.INFO)

def run_benchmark():
# retrieved 2022/03/22 from https://github.com/trending?since=monthly
Expand All @@ -34,42 +35,37 @@ def run_benchmark():
"vulhub/vulhub"
]

with open("./git_access_token") as file:
with open(".github_access_token") as file:
github_access_token = file.readline().strip()

benchmark_scenarios = [(github_access_token, repo_name, "FinishedResearchProject") for repo_name in
trending_github_repos] + [(github_access_token, repo_name, "InternalDocumentation")
for repo_name in trending_github_repos]
benchmark_scenarios = [(github_access_token, repo_name, "FAIRSoftware") for repo_name in
trending_github_repos]

for github_access_token, repo_name, repo_type in benchmark_scenarios:
file_name = f"{repo_name.split('/')[1]}-{repo_type}"

cmd = ["./shacl_validator.py", "--github_access_token", github_access_token, "--repo_name", repo_name,
"--expected_type", repo_type]

run(["python3", "-m", "cProfile", "-o",
f"data/benchmarks/{file_name}", "-s", "cumulative"] + cmd)
run(["python3", "-m", "cProfile", "-o", f"data/benchmarks/{file_name}", "-s", "cumulative"] + cmd)

sleep(3)


def process_results():
all_finished = []
all_internal = []
all_fair = []

step_durations = [0, 0, 0]

for result_file in glob.glob("./data/benchmarks/*"):
for result_file in glob.glob("./data/benchmarks/*FAIRSoftware"):
stats = pstats.Stats(result_file)

for k, v in stats.stats.items():
_, _, function = k

if function == "validate_repo_against_specs":
if "FinishedResearchProject" in result_file:
all_finished.append(v[3])
else:
all_internal.append(v[3])
if "FAIRSoftware" in result_file:
all_fair.append(v[3])

elif function == "create_project_type_representation":
step_durations[0] += v[3]
Expand All @@ -86,16 +82,14 @@ def process_results():
ylabel='Seconds',
)

ax.boxplot([all_finished, all_internal])
ax.boxplot([all_fair])

ax.set_xticklabels(
["$T_{F}$", "$T_{I}$"])
ax.set_xticklabels(["$T_{FAIRSoftware}$"])

plt.tight_layout(pad=0)

plt.savefig("./data/benchmarks/benchmark_results.pdf")

total = sum(all_finished) + sum(all_internal)
total = sum(all_fair)

step_one_percent = '{:.2f}%'.format(
step_durations[0] / total * 100)
Expand All @@ -109,5 +103,8 @@ def process_results():


if __name__ == "__main__":
# fairness assessment
run_benchmark()
process_results()

# runtime
Binary file not shown.
1 change: 1 addition & 0 deletions backend/data/evaluation/repos_expected_to_be_fair.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"oeg-upm/oeg-software-graph": {"DescriptionOrReadme": true, "PersistentId": true, "PublicRepository": true, "SemanticVersioning": true, "UsageNotesInReadme": false, "ExactlyOneLicense": true, "ExplicitCitation": true, "DescriptionOrAtLeastOneTopic": true, "InstallationInstructionsInReadme": true, "SoftwareRequirements": true}, "zenodraft/zenodraft": {"DescriptionOrReadme": true, "PersistentId": true, "PublicRepository": true, "SemanticVersioning": false, "UsageNotesInReadme": true, "ExactlyOneLicense": true, "ExplicitCitation": true, "DescriptionOrAtLeastOneTopic": true, "InstallationInstructionsInReadme": true, "SoftwareRequirements": true}, "comses-education/wolf-sheep": {"DescriptionOrReadme": true, "PersistentId": false, "PublicRepository": true, "SemanticVersioning": false, "UsageNotesInReadme": false, "ExactlyOneLicense": true, "ExplicitCitation": true, "DescriptionOrAtLeastOneTopic": true, "InstallationInstructionsInReadme": false, "SoftwareRequirements": false}, "fair-software/howfairis": {"DescriptionOrReadme": true, "PersistentId": true, "PublicRepository": true, "SemanticVersioning": true, "UsageNotesInReadme": false, "ExactlyOneLicense": true, "ExplicitCitation": true, "DescriptionOrAtLeastOneTopic": true, "InstallationInstructionsInReadme": true, "SoftwareRequirements": false}, "GrainLearning/grainLearning": {"DescriptionOrReadme": true, "PersistentId": true, "PublicRepository": true, "SemanticVersioning": false, "UsageNotesInReadme": false, "ExactlyOneLicense": true, "ExplicitCitation": true, "DescriptionOrAtLeastOneTopic": true, "InstallationInstructionsInReadme": true, "SoftwareRequirements": false}, "online-behaviour/machine-learning": {"DescriptionOrReadme": true, "PersistentId": false, "PublicRepository": true, "SemanticVersioning": false, "UsageNotesInReadme": true, "ExactlyOneLicense": true, "ExplicitCitation": true, "DescriptionOrAtLeastOneTopic": true, "InstallationInstructionsInReadme": true, "SoftwareRequirements": false}}
Binary file added backend/data/evaluation/runtime_benchmark_box.pdf
Binary file not shown.
1 change: 1 addition & 0 deletions backend/data/evaluation/runtime_benchmark_results.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"kohya_ss": [333, 6.149273872, "trending"], "qdrant": [479, 7.587065679, "trending"], "data-engineering-zoomcamp": [8, 3.2705682570000003, "trending"], "weekly": [3328, 3.238594682, "trending"], "30-Days-Of-Python": [152, 3.264650774, "trending"], "ML-For-Beginners": [17, 3.7624553570000003, "trending"], "whisper.cpp": [618, 4.154499037, "trending"], "Ryujinx": [830, 3.308689803, "trending"], "crewAI": [253, 4.042483737, "trending"], "ControlNet-v1-1-nightly": [54, 3.259032406, "trending"], "AgentGPT": [338, 6.600420346000001, "trending"], "ollama-webui": [128, 3.71774956, "trending"], "bevy": [2099, 3.584146515, "trending"], "mrsk": [124, 3.9980926950000004, "trending"], "awesome-chatgpt-prompts-zh": [39, 3.318572526, "trending"], "bun": [3267, 13.669202926, "trending"], "chatbot-ui": [99, 3.405853775, "trending"], "one-api": [522, 4.278319043000001, "trending"], "nas-tools": [2, 3.331086596, "trending"], "alpaca-lora": [373, 3.505891541, "trending"], "coding-interview-university": [58, 3.3429647090000003, "trending"], "video-retalking": [171, 3.348955344, "trending"], "gpt-crawler": [99, 3.4358465450000004, "trending"], "AFFiNE": [463, 13.711496521, "trending"], "sing-box": [320, 11.036155195000001, "trending"], "DeepSpeed": [1740, 17.743258865, "trending"], "awesome-chatgpt-prompts": [285, 3.3288980560000003, "trending"], "DeepFaceLive": [38, 4.033112351000001, "trending"], "ColossalAI": [477, 4.176778105, "trending"], "Microsoft-Activation-Scripts": [20, 3.4195533240000002, "trending"], "appwrite": [1112, 10.030643179, "trending"], "svelte": [1035, 7.293154702000001, "trending"], "LibreChat": [125, 4.321489408000001, "trending"], "gitness": [212, 4.401358639000001, "trending"], "everyone-can-use-english": [53, 3.5295240640000003, "trending"], "public-apis": [252, 3.3280595070000003, "trending"], "developer": [84, 3.452045103, "trending"], "organicmaps": [2386, 7.422461721, "trending"], "ui": [1081, 3.759052338, "trending"], "Fooocus": [221, 3.6211491400000004, "trending"], "ChatPaper": [83, 3.348232287, "trending"], "guidance": [238, 4.414925541000001, "trending"], "wenda": [52, 3.5287527470000004, "trending"], "atproto": [608, 10.717386231, "trending"], "ChatALL": [296, 6.319981084, "trending"], "privateGPT": [210, 3.623402714, "trending"], "ijepa": [31, 3.243062199, "trending"], "localpilot": [25, 3.3025153730000003, "trending"], "maybe": [14, 3.3863975600000003, "trending"], "so-vits-svc": [42, 3.404545959, "trending"], "tinygrad": [193, 4.284437921, "trending"], "hysteria": [212, 4.783197225, "trending"], "ChatGPT-Next-Web": [301, 4.861869547, "trending"], "civitai": [119, 3.9665338130000003, "trending"], "DB-GPT": [203, 4.4344858050000004, "trending"], "lemmy": [1230, 21.783576738, "trending"], "plane": [648, 8.79040771, "trending"], "mm-cot": [47, 3.390402909, "trending"], "commerce": [38, 3.561755461, "trending"], "stable-diffusion": [574, 3.251116226, "trending"], "generative-ai-for-beginners": [81, 4.257097988, "trending"], "wipeout-rewrite": [43, 3.1935651480000002, "trending"], "devpod": [170, 5.337686221, "trending"], "localsend": [361, 3.506813127, "trending"], "FinGPT": [67, 3.394322772, "trending"], "DevOpsGPT": [24, 3.4127574870000004, "trending"], "TTS": [247, 7.123276949, "trending"], "lobe-chat": [831, 15.164889098000002, "trending"], "v4-core": [134, 4.676984656, "trending"], "CasaOS": [455, 5.1759135810000005, "trending"], "opentofu": [272, 4.863282658, "trending"], "Moore-AnimateAnyone": [68, 3.2652178640000002, "trending"], "KernelSU": [53, 5.16543623, "trending"], "MemGPT": [246, 3.709168818, "trending"], "NvChad": [5, 3.8024615760000002, "trending"], "hello-algo": [35, 3.397500945, "trending"], "memos": [145, 5.286482096, "trending"], "taxonomy": [197, 3.492674458, "trending"], "dioxus": [254, 3.66564727, "trending"], "quivr": [1110, 22.610293744, "trending"], "langchain": [2389, 22.430422025000002, "trending"], "ChatGLM-Efficient-Tuning": [13, 4.369862632, "trending"], "vanna": [111, 4.263125835, "trending"], "generative-models": [254, 3.5861268120000003, "trending"], "novu": [855, 13.330679093, "trending"], "Retrieval-based-Voice-Conversion-WebUI": [796, 3.616643342, "trending"], "ChatDev": [45, 3.459646368, "trending"], "v2rayN": [189, 7.163501849, "trending"], "project-based-learning": [115, 3.4175709980000004, "trending"], "ChatGLM-6B": [582, 3.406032895, "trending"], "text-generation-webui": [256, 4.239049888, "trending"], "vscode-chatgpt": [12, 3.338669605, "trending"], "CodeEdit": [230, 3.8134301660000003, "trending"], "free-programming-books": [73, 3.8630769860000003, "trending"], "tabby": [242, 5.4329793330000005, "trending"], "lx-music-desktop": [683, 6.265574703, "trending"], "spotube": [352, 3.7283389220000003, "trending"], "chathub": [297, 3.402538496, "trending"], "PokemonRedExperiments": [70, 3.194502882, "trending"], "langchain-ChatGLM": [389, 3.7993353180000002, "trending"], "ali-dbhub": [88, 3.3302991690000003, "trending"], "so-vits-svc-fork": [346, 7.152177324, "trending"], "system-design": [4, 3.5244565980000004, "trending"], "Auto-GPT": [246, 3.7290719190000003, "trending"], "neuralangelo": [85, 3.6044507670000003, "trending"], "dify": [234, 5.708580801, "trending"], "chatgpt-web-midjourney-proxy": [75, 4.126363961, "trending"], "ToolBench": [78, 3.298891676, "trending"], "llama.cpp": [2430, 51.244774698, "trending"], "Open-Assistant": [454, 7.1236037450000005, "trending"], "servo": [3389, 5.640805547, "trending"], "PhotoMaker": [103, 3.2825390740000002, "trending"], "comprehensive-rust": [149, 3.4163447390000004, "trending"], "Stirling-PDF": [249, 5.217433957, "trending"], "WizardLM": [165, 3.363602213, "trending"], "Baichuan-7B": [86, 3.3965621620000004, "trending"], "anything-llm": [114, 3.405243854, "trending"], "tldraw": [889, 11.762952339, "trending"], "Reactive-Resume": [489, 4.978993652000001, "trending"], "stanford_alpaca": [189, 3.278172892, "trending"], "invidious": [488, 3.500447095, "trending"], "Chat2DB": [379, 4.497567923, "trending"], "facechain": [127, 4.084653392, "trending"], "nushell": [1412, 5.373783386, "trending"], "manifesto": [54, 4.156231992, "trending"], "gpt4free-ts": [51, 3.512207897, "trending"], "tech-interview-handbook": [40, 3.386020985, "trending"], "backstage": [1353, 18.510549472, "trending"], "insanely-fast-whisper": [60, 3.293156305, "trending"], "gpt-pilot": [320, 4.097165207000001, "trending"], "serenity": [787, 3.382767723, "trending"], "picoGPT": [11, 3.324976583, "trending"], "nextui": [1560, 28.100550249, "trending"], "ai-town": [58, 3.48630705, "trending"], "screenshot-to-code": [107, 3.245872576, "trending"], "yt-dlp": [1539, 5.9729979900000005, "trending"], "gpt-engineer": [74, 3.9629081330000004, "trending"], "narrator": [31, 3.214329261, "trending"], "seamless_communication": [193, 3.6815531200000002, "trending"], "v2rayNG": [199, 7.229107557000001, "trending"], "Bert-VITS2": [19, 3.564941648, "trending"], "rails": [1375, 7.183077685000001, "trending"], "youtube-dl": [4584, 11.749591032000001, "trending"], "biome": [214, 4.678095196, "trending"], "javascript": [170, 3.39229174, "trending"], "lowcode-engine": [587, 4.2154225180000005, "trending"], "reflex": [511, 6.514794538, "trending"], "clash-verge": [294, 4.499282216, "trending"], "AI-For-Beginners": [86, 3.674364713, "trending"], "BetterChatGPT": [223, 3.464504406, "trending"], "chatgpt-web": [51, 4.1699023760000005, "trending"], "ComfyUI": [1503, 3.3521181820000003, "trending"], "pr-agent": [114, 4.795440175, "trending"], "eShop": [86, 3.388562235, "trending"], "openai-python": [161, 5.637362459, "trending"], "The-Art-of-Linear-Algebra": [2, 3.2317930030000004, "trending"], "core-js": [283, 7.811271961, "trending"], "spacedrive": [143, 4.514998257, "trending"], "system-design-primer": [423, 3.3755888420000004, "trending"], "dspy": [311, 5.122560144, "trending"], "system-design-101": [39, 3.3443792090000004, "trending"], "npc_gzip": [14, 3.3943164880000003, "trending"], "whatsapp-web.js": [227, 5.405059603000001, "trending"], "JavaScript": [87, 3.3653631720000003, "trending"], "Fay": [72, 3.4496883630000004, "trending"], "dub": [192, 4.8403561680000005, "trending"], "llama": [356, 3.5380059700000004, "trending"], "Chinese-LLaMA-Alpaca-2": [30, 3.415995505, "trending"], "platforms": [40, 3.5837775140000003, "trending"], "audiocraft": [279, 3.41720793, "trending"], "cal.com": [1835, 24.603552936, "trending"], "Xray-core": [453, 5.077475564, "trending"], "incubator-answer": [162, 3.7151237000000004, "trending"], "InvokeAI": [756, 9.3404167, "trending"], "flash-attention": [476, 6.614749672, "trending"], "hyprdots": [92, 3.367827087, "trending"], "mastodon": [4329, 9.914710110000001, "trending"], "Feishu-OpenAI": [117, 3.65414437, "trending"], "ChuanhuChatGPT": [134, 3.7315887720000003, "trending"], "Rope": [19, 3.35768783, "trending"], "QAnything": [171, 3.449559101, "trending"], "dalai": [344, 3.454272891, "trending"], "ollama": [931, 6.392430119, "trending"], "expo": [1157, 12.477746264, "trending"], "danswer": [225, 3.3080155380000003, "trending"], "ml-stable-diffusion": [167, 3.413253445, "trending"], "devops-exercises": [40, 3.361005038, "trending"], "Mr.-Ranedeer-AI-Tutor": [20, 3.33035745, "trending"], "graphcast": [28, 3.396939129, "trending"], "documenso": [220, 5.8719194230000005, "trending"], "nekoray": [375, 5.013031767, "trending"], "fairseq": [1316, 4.664430126, "trending"], "namada": [1068, 15.838671829, "trending"], "v2ray-core": [178, 7.333839822000001, "trending"], "MetaGPT": [273, 4.683900832, "trending"], "godot": [12290, 4.978857452000001, "trending"], "LLaVA": [761, 3.4754125580000004, "trending"], "clone-voice": [13, 3.363918419, "trending"], "996.ICU": [5, 3.269847513, "trending"], "langchain-tutorials": [11, 3.269953783, "trending"], "hackingtool": [50, 3.3820020640000004, "trending"], "stable-diffusion-webui": [2034, 3.6385031000000003, "trending"], "h2ogpt": [733, 12.870253486000001, "trending"], "rinha-de-backend-2023-q3": [1, 3.2564498700000004, "trending"], "AppFlowy": [798, 6.688640175000001, "trending"], "LocalAI": [332, 5.121105841, "trending"], "ControlNet": [407, 3.304860369, "trending"], "gaussian-splatting": [297, 3.372469736, "trending"], "AnimatedDrawings": [12, 3.3623673550000004, "trending"], "awesome-english-ebooks": [1, 3.2081148510000004, "trending"], "TinyLlama": [36, 3.260123215, "trending"], "FastGPT": [159, 4.3276700660000005, "trending"], "Flowise": [624, 9.437515770000001, "trending"], "chatgpt-on-wechat": [440, 4.3161181090000005, "trending"], "oeg-software-graph": [3, 3.3478682500000003, "expected"], "zenodraft": [38, 3.6558369780000004, "expected"], "wolf-sheep": [4, 3.4884464200000003, "expected"], "howfairis": [101, 3.463828781, "expected"], "grainLearning": [27, 3.457117439, "expected"], "machine-learning": [2, 3.530429262, "expected"]}
Binary file not shown.
1 change: 1 addition & 0 deletions backend/data/evaluation/trending_repos.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions backend/data/shacl/property_shapes.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,8 @@ propertyShapes:DoiAsHomepage
# The homepage link is internally mapped via the "website" property.
sh:path sd:website ;
# https://www.crossref.org/blog/dois-and-matching-regular-expressions/
# Put into the right format with the help of ChatGPT.
sh:pattern "^https://doi\\.org/10\\.[0-9]{4,}/[-._;()/:A-Z0-9]+$" ;
# Put into the right format with the help of ChatGPT, adapted.
sh:pattern "^https://doi\\.org/10\\.[0-9]{4,}/[-._;()/:A-Za-z0-9]+$" ;
sh:minCount 1 ;
sh:message "The homepage attribute is not set or its value is not a DOI. Make sure this attribute is filled with a DOI." ;
sh:description
Expand Down
Loading

0 comments on commit 8b77141

Please sign in to comment.