
Security News
Open Source CAI Framework Handles Pen Testing Tasks up to 3,600× Faster Than Humans
CAI is a new open source AI framework that automates penetration testing tasks like scanning and exploitation up to 3,600× faster than humans.
This package helps you in generating ontology-related objects and lets you easily create JSON-LD files.
Install the package:
pip install ontolutils
Imagine you want to describe a prov:Person
with a first name, last name and an email address but writing
the JSON-LD file yourself is too cumbersome and you want validation of the parsed parameters. The package
lets you design classes, which describe ontology classes like this:
from pydantic import EmailStr, Field
from pydantic import HttpUrl, model_validator
from ontolutils import Thing, urirefs, namespaces, as_id
@namespaces(prov="https://www.w3.org/ns/prov#",
foaf="https://xmlns.com/foaf/0.1/",
m4i='http://w3id.org/nfdi4ing/metadata4ing#')
@urirefs(Person='prov:Person',
firstName='foaf:firstName',
lastName='foaf:lastName',
mbox='foaf:mbox',
orcidId='m4i:orcidId')
class Person(Thing):
firstName: str
lastName: str = Field(default=None, alias="last_name") # you may provide an alias
mbox: EmailStr = Field(default=None, alias="email")
orcidId: HttpUrl = Field(default=None, alias="orcid_id")
# the following will ensure, that if orcidId is set, it will be used as the id
@model_validator(mode="before")
def _change_id(self):
return as_id(self, "orcidId")
p = Person(id="https://orcid.org/0000-0001-8729-0482",
firstName='Matthias', last_name='Probst')
# as we have set an alias, we can also use "lastName":
p = Person(id="https://orcid.org/0000-0001-8729-0482",
firstName='Matthias', lastName='Probst')
# The jsonld representation of the object will be the same in both cases:
json_ld_serialization = p.model_dump_jsonld()
# Alternatively use
serialized_str = p.serialize(format="json-ld") # or "ttl", "n3", "nt", "xml"
The result of the serialization is shown below:
{
"@context": {
"owl": "http://www.w3.org/2002/07/owl#",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"prov": "https://www.w3.org/ns/prov#",
"foaf": "https://xmlns.com/foaf/0.1/",
"m4i": "http://w3id.org/nfdi4ing/metadata4ing#"
},
"@id": "https://orcid.org/0000-0001-8729-0482",
"@type": "prov:Person",
"foaf:firstName": "Matthias",
"foaf:lastName": "Probst"
}
If you cannot define the class statically as above, you can also define it dynamically:
from typing import List, Union
from ontolutils import build, Property, Thing
Event = build(
namespace="https://schema.org/",
namespace_prefix="schema",
class_name="Event",
properties=[Property(
name="about",
default=None,
property_type=Union[Thing, List[Thing]]
)]
)
conference = Event(label="my conference", about=[Thing(label='The thing it is about')])
ttl = conference.serialize(format="ttl")
The serialization in turtle format looks like this:
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <https://schema.org/> .
[] a schema:Event ;
rdfs:label "my conference" ;
schema:about [ a owl:Thing ;
rdfs:label "The thing it is about" ] .
Please visit the documentation for more information.
FAQs
Utility library for the work with ontologies.
We found that ontolutils demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CAI is a new open source AI framework that automates penetration testing tasks like scanning and exploitation up to 3,600× faster than humans.
Security News
Deno 2.4 brings back bundling, improves dependency updates and telemetry, and makes the runtime more practical for real-world JavaScript projects.
Security News
CVEForecast.org uses machine learning to project a record-breaking surge in vulnerability disclosures in 2025.