Skip to content

nbittich/graph-rdfa-processor

Repository files navigation

RDFa processor library (WIP)

Rust and wasm library to extract rdf statements (in n-triples format) from an html file based on rdfa annotations.

Examples

Rust usage:

use graph_rdfa_processor::RdfaGraph;
    let html = r#"
    <div prefix="foaf: http://xmlns.com/foaf/0.1/" about="http://www.example.org/#somebody" rel="foaf:knows">
        <p about="http://danbri.org/foaf.rdf#danbri" typeof="foaf:Person" property="foaf:name">Dan Brickley</p>
	  </div>
    "#;
    let base = "http://example.com";
    let well_known_prefix = Some("http://example.org/.well_known");

    RdfaGraph::parse_str(html, base, well_known_prefix).unwrap()

Node usage:

npm i @nbittich/rdfa-wasm

const { html_to_rdfa } = require("@nbittich/rdfa-wasm");

const example = `
           
<!doctype html>
<html>
  <head>
    <title>Test 0224</title>
  </head>
  <body>
    <div about="">
      <ol rel="rdf:value" inlist="">
        <li>git remote add origin git@github.com:nbittich/node-rdfa-wasm-example.git<a href="foo">Foo</a></li>
        <li><a href="bar">Bar</a></li>
      </ol>
    </div>
  </body>
</html>

`;

console.log(html_to_rdfa(example, "http://data.lblod.info", ""));

Web usage (not published on npm yet):

 <script type="module">
    import init, {html_to_rdfa} from "./rdfa-wasm/pkg/rdfa_wasm.js";

    async function run() {
      await init();
      let html =`
        <div prefix="foaf: http://xmlns.com/foaf/0.1/" about="http://www.example.org/#somebody" rel="foaf:knows">
            <p about="http://danbri.org/foaf.rdf#danbri" typeof="foaf:Person" property="foaf:name">Dan Brickley</p>
	      </div>
      `;
      let base = "http://example.com";
      let well_known_prefix = "http://example.org/.well_known";
      let res = html_to_rdfa(html, base, well_known_prefix);

    }
    run();
  </script>